2011-11-01 8 views
5

मैंने शुरुआत में आईओएस 4 के लिए अपना ऐप विकसित किया है और अब आईओएस 5 बाहर है, मैंने आईओएस 5 एसडीके के लिए विकसित करने का फैसला किया है, जो अब मेरे ऐप को तोड़ने लगता है।उद्देश्य-सी - आईओएस 4 से आईओएस 5 तक ऐप स्टार्टअप विधियों में अंतर?

मेरे पास प्रत्येक टैब में एक नेविगेशन नियंत्रक के साथ एक टैब बार एप्लिकेशन है।

आईओएस 4 में -application:didFinishLaunchingWithOptions: विधि में जो कुछ भी था, स्टार्टअप के बाद पहले निष्पादित किया गया था। उस विधि को निष्पादित करने के बाद, पहले टैब के लिए व्यू कंट्रोलर लोड किया गया था।

तो जब मैं लॉग इन करें मेरी स्टार्टअप एप्लिकेशन प्रक्रिया (के लिए सिम्युलेटर iOS 4.3 चल) यह इस तरह दिखता है:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And it does as it should 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // Also as it should 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

अब जब मैं अपने स्टार्टअप एप्लिकेशन प्रक्रिया लॉग इन करें (के लिए सिम्युलेटर चल iOS 5.0) ऐसा लगता है:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // So this should be executed second but is executed first 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And this is executed second but should be executed first 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

क्या मुझे यहां कुछ स्पष्ट याद आ रही है? मेरे लिए ऐसा लगता है कि आईओएस 4 और आईओएस 5 के बीच हमारे पास दो अलग-अलग स्टार्टअप स्थितियां हैं?

+0

यदि आप इस कई बार परीक्षण करते हैं, तो क्या परिणाम समान हैं? –

+0

हां परिणाम हर बार समान होते हैं। क्या आईओएस 4 की तुलना में आईओएस 5 में .xib फाइलों (मेरे मामले में मेनविंडो.एक्सिब) का प्रबंधन अलग है? –

उत्तर

1

आपके ऐप का सफल स्टार्टअप इन घटनाओं के किसी विशेष अनुक्रम पर निर्भर क्यों करता है? उपरोक्त उन अनुक्रमों में कुछ भी नहीं होना चाहिए जिससे आप समस्याएं उत्पन्न कर सकें, आपका कोड सटीक अंतर्निहित स्टार्टअप अनुक्रम के रूप में अनजान होना चाहिए।

क्या आप यह समझाने के लिए कुछ कोड दे सकते हैं कि इससे आपको कोई समस्या क्यों आ रही है?

+0

मैं 'ऑब्जेक्ट' में कुछ ऑब्जेक्ट्स शुरू कर रहा हूं: didFinishLaunchingWithOptions: 'जिस विधि पर मैं निर्भर करता हूं उसे पहले टैब में व्यू कंट्रोलर (सेमिनार व्यू कंट्रोलर) लोड करने से पहले प्रारंभ किया जाना चाहिए। यही कारण है कि स्टार्टअप आईओएस 4 में "सफल" है (मेरा कोड काम करता है जैसा कि इसका इरादा था), लेकिन सटीक एक ही कोड अलग-अलग काम कर रहा है IOS 5. तो किसी भी तरह से उन्होंने कुछ तरीके से बदल दिया है - आवेदन: didFinishLaunchingWithOptions: ' आईओएस 4 से आईओएस 5 तक काम करता है। –

+1

आह ठीक है। मैं इंटरफेस बिल्डर की बजाय कोड के माध्यम से अपने व्यू कंट्रोलर को हुक अप करता हूं, जब दृश्य नियंत्रक बनाया जाता है (और बाद में दृश्य लोड होता है) तो यह आपको कुल नियंत्रण देगा। –

+0

लेकिन आईओएस 4 या आईओएस 5 पर चलने पर मेरा कोड अलग-अलग व्यवहार क्यों करता है? –