यदि मैं फ़ाइल के स्वामी का उपयोग किये बिना किसी ऑब्जेक्ट फ़ाइल को एक निब फ़ाइल से लोड कर सकता हूं तो फ़ाइल के मालिक के अस्तित्व का कारण क्या है? आउटलेट-एक्शन कनेक्शन भी फ़ाइल के मालिक के उपयोग के बिना बनाया जा सकता है। उदाहरण के लिए मैं सीधे वस्तु से निब में कनेक्शन कर सकता हूं। तो फिर मैं वास्तव में फ़ाइल के मालिक की आवश्यकता को समझ नहीं सकता। क्या इसका एमवीसी पैटर्न के साथ कोई संबंध है? क्या फ़ाइल का स्वामी UIViewController प्रकार का होना चाहिए?निब फ़ाइल के मालिक को शून्य करने के लिए कौन सी समस्याएं हो सकती हैं?
उत्तर
एक निब फ़ाइल लोड करने के दौरान, कोको निब फ़ाइल में क्रमबद्ध प्रत्येक ऑब्जेक्ट उत्पन्न करता है। फिर, निब फ़ाइल में प्रत्येक कनेक्शन के लिए, यह कनेक्शन बनाने के लिए लक्षित ऑब्जेक्ट पर setValue:forKey:
पर कॉल करता है। कुछ कनेक्शन ऑब्जेक्ट nil
पर हैं। उन setValue:forKey:
संदेशों को फ़ाइल स्वामी के रूप में जो भी ऑब्जेक्ट पास किया जाता है, उन्हें भेजा जाता है।
यदि आपके पास कोई फ़ाइल स्वामी नहीं है, तो nil
कनेक्शन अनदेखा कर दिए जाएंगे। यदि आपके पास nil
कनेक्शन नहीं हैं, तो यह फ़ाइल स्वामी नहीं होने से अलग नहीं होगा। यह विशेष रूप से आम नहीं है।
यह सब आपको लोडिंग प्रक्रिया में विभिन्न फ़ाइल मालिकों को पास करके, एक ही निब फ़ाइल ऑब्जेक्ट्स के कई उदाहरणों को तुरंत चालू करने की अनुमति देता है।
संपादित करें:
याद रखें, एक निब फ़ाइल सिर्फ धारावाहिक वस्तुओं का एक समूह है। जब आप प्रोग्रामिंग रूप से initWithNibName:bundle:
के साथ व्यू कंट्रोलर बनाते हैं, तो nib फ़ाइल लोड होने से पहले व्यू कंट्रोलर पहले से मौजूद है। Nib फ़ाइल के अंदर ऑब्जेक्ट्स लगभग हमेशा उस व्यू कंट्रोलर को संदर्भित करने में सक्षम होना चाहते हैं। इसलिए हम फ़ाइल नियंत्रक के रूप में व्यू कंट्रोलर UINib
पर पास करते हैं। कहीं भी nib फ़ाइल nil
, UINib
फ़ाइल मालिक (आमतौर पर दृश्य नियंत्रक) के साथ बदलती है।
यह बहुत लचीला है, लेकिन लचीलापन बिंदु नहीं है। यदि आप निब इंस्टेंटेशन के दौरान इसे पास नहीं करते हैं तो nib फ़ाइल के अंदर व्यू कंट्रोलर को संदर्भित करने का कोई तरीका नहीं होगा।
एक शून्य वस्तु से कनेक्शन होने का क्या कारण है? आईबी में –
"शून्य ऑब्जेक्ट" का अर्थ है "ऑब्जेक्ट फ़ाइल स्वामी के रूप में पास किया गया।" –
तो फाइल के मालिक के अस्तित्व का एकमात्र कारण यह है कि हमें लोडिंग प्रक्रिया के दौरान उसे बदलने की क्षमता देकर, nibs को और अधिक गतिशील जोड़ना है? –