2012-03-03 18 views
5

हमारे पास एक ऐप है जो पहले से ही ऐप स्टोर पर लाइव है।ऐप अपडेट अभी भी पुराने हटाए गए निब्स को इंगित करता है। एप री-इंस्टाल किए बिना इसे कैसे हल करें?

अब हम प्रोग्रामिंग रूप से सभी विचारों को & संबंधित एनआईबी (एक्सआईबी) फ़ाइलों को हटाकर ऐप आकार को कम करने की योजना बना रहे हैं।

समस्या तब भी होती है जब निब हटा दिया जाता है & नहीं कहा जाता है, ऐप का अद्यतन संस्करण अभी भी पुराने निब को इंगित करता है, और इस तरह की समस्या आती है (यह छवि सिर्फ एक उदाहरण है, समस्या सुसंगत है पूरे एप्लिकेशन):

enter image description here

असल में, विचारों दोनों आईबी & कोड द्वारा बनाया गया मिलता है।

एकमात्र समाधान जो हम अभी तक आए हैं, & ऐप को दोबारा इंस्टॉल करना है, लेकिन सभी उपयोगकर्ताओं को ऐसा करने के लिए अवांछनीय है। इसके अलावा, यह उनके स्थानीय रूप से संग्रहीत ऐप डेटा को भी हटा देगा, जो मुख्य मुद्दा है जिसे हम यहां से बचने की कोशिश कर रहे हैं।


ऊपर दिखाए गए उदाहरण के लिए, कोड निम्नलिखित ViewController लोड करने के लिए इस्तेमाल किया गया था:

इससे पहले (जब दृश्य निब का उपयोग कर बनाया गया था):

TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:@"TheNewVC" bundle:nil]; 
    [self presentModalViewController:theNewVC animated:YES]; 

अब (दृश्य है जब प्रोग्राम के रूप में बनाया गया है, इसके बाद के संस्करण मुद्दे के लिए अग्रणी):

TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil]; 

    UINavigationController *addNavCon = [[UINavigationController alloc] initWithRootViewController:theNewVC]; 
    [self presentModalViewController:addNavCon animated:YES]; 

JFYI, भले ही TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil]; को TheNewVC *theNewVC = [[TheNewVC alloc] init]; द्वारा प्रतिस्थापित किया गया है, समस्या एक ही है।


क्या समाधान हो सकता है जिसमें ऐप की पुन: स्थापना शामिल नहीं है। किसी भी तरह से हम एनआईबी कैश को हटा सकते हैं जो आईओएस प्रोग्रामिंग के संदर्भ में है? या बदतर मामले में, उपयोगकर्ताओं को ऐसा करने के लिए कहें? कोई भी सहायताकाफी प्रशंसनीय होगी।

+0

क्या आप निब फ़ाइल को हटाते हैं या यह अभी भी परियोजना में मौजूद है? – HelmiB

+0

निब हटा दिया गया है .. – BufferStack

उत्तर

7

मुझे लगता है कि आप एक्सकोड के भीतर से ऐप चला रहे हैं। कौन सा आपके ऐप बंडल से पूर्व-मौजूदा संसाधनों को साफ़ नहीं करता है। लेकिन जब आप app की दुकान के माध्यम से स्थापित करते हैं, मैं कर रहा हूँ यकीन यह आपके एप्लिकेशन बंडल दूर साफ करता है और शीर्ष पर नया संस्करण unzips (ताकि पुराने संसाधनों दूर मंजूरी दी जाती है ..)

आप डबल होना चाहते हैं सुनिश्चित करें कि आपका .xib लोड नहीं होगा, केवल ViewController क्लास का नाम बदलें और यह अब पुराने xib को लोड नहीं करेगा (क्योंकि यह एप्लिकेशन बंडल में viewcontrollername.xib नामक फ़ाइल की तलाश करता है)

ऐसा करने के लिए व्यू कंट्रोलर के लिए .h, व्यू कंट्रोलर्स नाम पर राइट क्लिक करें, और रिफैक्टर का चयन करें।

+0

"हालांकि जब आप ऐप स्टोर के माध्यम से इंस्टॉल करते हैं, तो मुझे यकीन है कि यह आपके ऐप बंडल को साफ़ कर देगा और शीर्ष पर नए संस्करण को अनजिप कर देगा" - मुझे इसके बारे में इतना यकीन नहीं है। यह एक्सकोड है जो ऐप बनाता है और इसमें सभी संसाधन रखता है। यदि यह कैश किए गए डेटा में डालता है, तो डिवाइस उस डेटा का उपयोग करेगा। –

+0

नहीं, जब आप एक्सकोड के माध्यम से एक ऐप चलाते हैं तो यह केवल ऐप बंडल में नई फाइलों की प्रतिलिपि बनाता है, ताकि आप आसपास के पुराने संसाधनों को समाप्त कर सकें।हालांकि ऐप स्टोर के लिए 'रिलीज' मोड में एक क्लीन बिल्ड पूरी तरह से ताज़ा होगा। एपीए ताकि अगर संसाधन हटा दिए गए हैं तो वे * ऐप बंडल में दिखाई नहीं देंगे। इसके बाद जब उपयोगकर्ता एपस्टोर/एडमोक से इंस्टॉल करता है तो पूर्व-स्थापित ऐप हटा दिया जाता है, और नया आईपीए बंडल शीर्ष पर डिकंप्रेस होता है। –

+0

किसी भी तरह से, भले ही @ बफरस्टैक चिंतित था कि संसाधन अभी भी हो सकते हैं, मेरे उत्तर का दूसरा भाग (व्यू कंट्रोलर क्लास का नाम बदलना) सही है। –