2011-10-24 15 views
9

एक्सकोड 4.2 का उपयोग कर किसी भी प्रकार के आईओएस 5.0 विकास करने से पहले, एक्सकोड ने टेम्पलेट्स में "मेनविंडो.एक्सिब" प्रदान किया है। आईओएस 5.0 के साथ एक्सकोड 4.2 के साथ डाउनलोड करने और खेलने के बाद, मैंने देखा कि प्रदान किए गए किसी भी टेम्पलेट में "MainWindow.xib" फ़ाइलें शामिल नहीं हैं। क्या हमें अब इसकी आवश्यकता है? मैंने देखा कि App_Delegate में "एप्लिकेशन ने फिनिश लांचिंगविथऑप्शन" विधि में टेम्पलेट्स में अब कोड शामिल किया है जो कुछ "UIWindow" बनाता है और यदि आपके पास कोई नेविगेशन नियंत्रक है, तो यह तदनुसार विंडो को अपडेट करता है।आईओएस एप्लिकेशन में वास्तव में एक MainWindow.xib की आवश्यकता है?

// code that was pulled from a Master Detail application template 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil]; 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController]; 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

मुझे लगता है कि मेरे सवाल है, मैं एक "MainWindow.xib" की जरूरत है किसी भी अब नहीं है, और एप्पल टेम्पलेट्स उन्हें निकाल यदि ऐसा है तो, तो क्यों करते हैं?

उत्तर

4

मुझे लगता है कि कारण है कि यह अब अनुपस्थित है कि एक खिड़की प्रोग्राम के रूप में बनाने में ज्यादा एक xib फ़ाइल खोलने और वस्तुओं गैर अभिलेख तुलना में अधिक कुशल है। आम तौर पर, यदि आप इसे कोड की एक पंक्ति में कर सकते हैं, तो आपको कोड में ऐसा करना चाहिए। मैन्युअल एक पुराने परियोजना को बदलने के लिए पर निर्देश के लिए

पढ़ें मैथ्यू जिल्लिंघम के जवाब MainWindow.xib के बिना काम करने के लिए।

+0

तो क्या आपको लगता है कि "MainWindow.xib" को छोड़कर सभी भविष्य की परियोजनाओं के लिए जाने का तरीका है? – 5StringRyan

+2

हां, मैं हमेशा अपनी सभी परियोजनाओं के लिए प्रोग्रामेटिक रूप से एक विंडो बना देता हूं क्योंकि, आप जानते हैं कि विंडो में दिखाई देने वाली पहली चीज़ को व्यू कंट्रोलर द्वारा प्रबंधित किया जाता है। एक खिड़की के साथ एक xib होने और कुछ भी नहीं आपको कोई फायदा नहीं देता है। – Costique

15

यह हमेशा एक विकल्प रहा है जो MainWindow.xib का उपयोग नहीं करना है। UIWindow करके प्रोग्राम के रूप में लोड किया जा सकता है:

1) यकीन है कि main.m में UIApplicationMain करने के लिए कॉल इस तरह दिखता है कि बनाना:

UIApplicationMain(argc, argv, nil, @"MyAppDelegateClassName"); 

बल्कि इस से:

UIApplicationMain(argc, argv, nil, nil); 

2) यह सुनिश्चित करना कि Info.plist के पास मुख्य मेन फ़ाइल के रूप में "MainWindow.xib" का मान नहीं है।

3) अनुप्रयोग प्रतिनिधि में UIWindow लोड हो रहा है प्रोग्राम के रूप में।

तो, नहीं, तुम MainWindow.xib और, उपयोग करने के लिए वास्तव में, आप कभी नहीं की जरूरत नहीं है। आप हमेशा प्रोग्रामेटिक रूप से चीजें कर सकते हैं।

यह एक अच्छा सवाल क्यों एप्पल डिफ़ॉल्ट Xcode सेटिंग्स में यह परिवर्तन किया है, और मैं इस सवाल का जवाब पता नहीं है। लेकिन इसे प्रदर्शन या एआरसी या छोटे आवेदन फ़ाइल आकार या कुछ और पूरी तरह से संक्रमण के साथ संक्रमण हो सकता है।

+0

क्या कुछ पेशेवर और विपक्ष प्रदान करना संभव है? मुझे लगता है कि मैं यह समझने की कोशिश कर रहा हूं कि "MainWindow.xib" के उपयोग या गैर-उपयोग के संबंध में आगे बढ़ने वाली सबसे अच्छी शर्त क्या होगी। – 5StringRyan

+0

मैं इसके बारे में सोच रहा हूं, और मुझे वास्तव में बहुत से पेशेवरों के साथ समस्या आ रही है। मुझे लगता है कि यह आपको एक दृश्य बार के आधार पर एक टैब बार आधारित एप्लिकेशन (या शायद एक नेविगेशन नियंत्रक) सेट करने की अनुमति देता है क्योंकि आप इंटरफेस बिल्डर में कंटेनर व्यू में हेरफेर कर सकते हैं।अब जब मैं टेम्पलेट के साथ एक नया टैब बार एप्लिकेशन बनाता हूं, तो टैब बार केवल कोड में मौजूद होता है। लेकिन चूंकि इंटरफ़ेस बिल्डर के साथ व्यू कंट्रोलर बनाना और उपयोग करना अभी भी आसान है, इसलिए मेरे लिए यह सोचना मुश्किल है कि बहुत कुछ खो गया है। मैं शायद MainWindow.xib का उपयोग किये बिना आगे बढ़ जाऊंगा। –

2

मैं हमेशा MainWindow.xib के उपयोग के बारे में उलझन महसूस: इसके साथ भी मैं अभी भी यह करने के लिए खिड़की के rootViewController या addSubview सेट करना होगा। क्या यह जानकारी MainWindow.xib में निहित नहीं है? मुझे अभी भी इसके बारे में विंडो बताने की ज़रूरत क्यों है?

तो MainWindow.xib को हटाने का अर्थ समझ में आता है।

संबंधित मुद्दे

 संबंधित मुद्दे