2011-10-21 24 views
6

पृष्ठभूमि: ऊपर Xcode 4.2 जब तक, बनाया नई परियोजनाओं टेम्पलेट्स में से किसी का उपयोग कर एक MainWindow.xib होते हैं और इसलिए होगा UIApplicationMain के चौथे तर्क के रूप में नहीं के बराबर पारित()। एक्सकोड 4.2 में शुरू होने से सभी टेम्पलेट वर्ग स्ट्रिंग को चौथे तर्क के रूप में पास करके एप्लिकेशन प्रतिनिधि को तत्काल बनाते हैं और xib में एप्लिकेशन की विंडो नहीं बनाते हैं।Xcode 4.2 खाका परिवर्तन - UIApplication और MainWindow.xib

4.2 में इस सेटअप को पूरा करने के लिए यह छोटा है, और निश्चित रूप से यह अपेक्षित रूप से काम करता है: xib सेटिंग फ़ाइल के मालिक को यूआईपीप्लिकेशन के लिए बनाएं और प्रतिनिधि को तार दें, इसे Info.plist में निर्दिष्ट करें, मुख्य() में चौथा तर्क दें।

प्रश्न: ऐप्पल एप्लिकेशन प्रतिनिधि को तुरंत चालू करने और "पुराने तरीके" के बजाय कोड में UIWindow बनाने का उत्साह क्यों कर रहा है? क्या लाभ हैं?

बातें: मैं तुम्हें यूआई का प्रबंधन करने के एक तरीके के रूप स्टोरीबोर्डिंग उपयोग करने के लिए चुनाव करता है, तो इस नए टेम्पलेट व्यवहार उम्मीद होती है, लेकिन अगर आप सही का निशान हटाएँ "का प्रयोग करें स्टोरीबोर्ड" मैं पुराने पास नहीं के बराबर और उपयोग की उम्मीद है | -MainWindow.xib टेम्पलेट।

इस प्रश्न को here पर एक चौराहे के रास्ते में पूछा गया था, लेकिन उत्तर चर्चा पर थोड़ा पतला है।

+0

फ़ाइल स्वामी को सेट करने और प्रतिनिधि को तारों के बारे में युक्ति के लिए धन्यवाद; मुझे एक पुस्तक के बाद परेशानी हो रही थी जो कि केवल 12 महीने पुरानी है और फिर भी काफी पुरानी है, ऐप्पल द्वारा किए गए तेज़ टूल बदलावों को देखते हुए। – trojanfoe

उत्तर

7

आप पूछ रहे हैं कि ऐप्पल कुछ क्यों कर रहा है? जब तक ऐप्पल ने स्पष्ट रूप से बात नहीं की है, तब तक कोई निश्चित जवाब नहीं हो सकता है, जो उन्होंने नहीं किया है।

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

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

अब, हालांकि, ऐप प्रतिनिधि को केवल ऐप प्रतिनिधि नाम दिया गया है और यूआईपीप्लिकेशनमेन() द्वारा कोड में तत्काल है, जैसा कि आप सही कहते हैं; और सबकुछ अन्यभी सीधे अनुवर्ती कोड के रूप में कोड में किया गया है: ऐप प्रतिनिधि को तत्काल और किया गया है फिनिश लांचिंग कहा जाता है, जहां हम कोड में विंडो बनाते हैं, इसे कोड में हमारी संपत्ति को असाइन करते हैं, अगर वहां मौजूद होता है तो निब लोड करें कोड में से एक है, कोड में विंडो की रूटव्यू कंट्रोलर सेट करें, और पहले से कोड में इंटरफ़ेस दिखाएं।

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

+0

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

+1

मैं बिल्कुल सहमत नहीं हूं। टेम्पलेट्स उल्लेखनीय रूप से खराब विचार-विमर्श कर रहे हैं, खासकर उनके महत्व को देखते हुए। एक्सकोड 4 में विभाजित दृश्य के लिए टेम्पलेट में एक बड़ी बग है जो पोर्ट्रेट अभिविन्यास में कम स्मृति स्थिति होने पर उजागर होती है। एक्सकोड 4.2 में उपयोगिता अनुप्रयोग के लिए टेम्पलेट FlipsideViewController की प्रतिनिधि संपत्ति को किसी भी कारण से गलत तरीके से आईबीओलेट के रूप में घोषित करता है। एक्सकोड 4.2 में खाली एप्लिकेशन टेम्पलेट, जैसा कि प्रयोग किया जाता है, रनटाइम चेतावनी का कारण बनता है! मैं आगे बढ़ता रह सकता हूं। टेम्पलेट्स किसी भी माध्यम से सुसमाचार नहीं हैं; वे "सेवा देने वाले सुझाव" की तरह अधिक हैं। – matt

+0

आपके पास बहुत सारे वैध अंक हैं जिन्हें मैंने अन्य टेम्पलेट फ़ाइलों के बारे में नहीं माना था। मैं (naively) माना जाता है कि टेम्पलेट्स के पिछले संस्करणों से इस तरह का एक महत्वपूर्ण परिवर्तन ध्वनि तर्क और लापरवाही के कारण होना चाहिए था। मैंने सोचा कि सबसे कम संभावना कारण कमजोर आउटलेट का उपयोग करने के आईबी (नए) डिफ़ॉल्ट व्यवहार में परिवर्तन था। – edelaney05

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