2009-02-28 8 views
28

दुर्भाग्यवश, फ़ाइल के मालिक का स्पष्टीकरण ऐप्पल दस्तावेज़ों में बहुत छोटा है। मुझे पता है कि यह एक प्रॉक्सी वस्तु है। लेकिन वास्तव में उस "फाइल के मालिक" ऑब्जेक्ट के बारे में क्या बात है? ये किस काम के लिए अच्छा है?"फ़ाइल के मालिक" का उद्देश्य क्या उद्देश्य-सी/कोको निब में सबसे अच्छा है?

+0

यह प्रश्न इस पर भी चर्चा करता है: http://stackoverflow.com/questions/789251/is-there-an-easy-to-understand-guide-new-to-cocoa-xcode-etc-for-interface-bui –

+0

फ़ाइल के स्वामी का स्पष्टीकरण के लिए: http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

उत्तर

1

http://www.cocoadev.com/index.pl?FilesOwner

संक्षेप में, इनमें से जो भी वस्तु NibFile भरी हुई है कि निब फ़ाइल के लिए फ़ाइल के मालिक बन जाता है।

+1

यह गलत है। Http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

4

मुझे पता है कि यह एक प्रॉक्सी ऑब्जेक्ट है।

यह नहीं है। यह एक वास्तविक वस्तु है। निब में आइकन केवल इस अर्थ में प्रॉक्सी है कि अन्य सभी आइकन nib में संग्रहीत संग्रहीत करते हैं, और फ़ाइल का स्वामी नहीं है। लेकिन एफओ आपके आवेदन में प्रॉक्सी ऑब्जेक्ट नहीं है।

लेकिन वास्तव में "फ़ाइल के मालिक" ऑब्जेक्ट के बारे में क्या बात है? ये किस काम के लिए अच्छा है?

यह ऑब्जेक्ट है जो निब में ऑब्जेक्ट्स का मालिक है।

यही है। इससे ज्यादा कुछ नहीं।

+0

धन्यवाद देखें। तो निब में सभी शीर्ष-स्तरीय ऑब्जेक्ट्स फ़ाइल के स्वामी ऑब्जेक्ट के गुण हैं? उस फ़ाइल के मालिक ऑब्जेक्ट से कक्षा कहां है? मैं इसे कहां देखूं? – Thanks

+0

आईबी में फ़ाइल के मालिक का चयन करें, फिर कमांड -6। आप कक्षा पहचान अनुभाग करेंगे जो आपको फ़ाइल के मालिक के लिए कक्षा निर्धारित करने देगा। – sbooth

+0

जरूरी नहीं है। यदि आप चाहें तो फ़ाइल के मालिक को निब की सामग्री से अनजान हो सकता है। यह आउटलेट क्या है: अन्य ऑब्जेक्ट्स के बारे में एक ऑब्जेक्ट बता रहा है। आपको एफओ को कम से कम एक आउटलेट को किसी ऑब्जेक्ट में देना चाहिए; फिर आप आईबी में इसे हुक करेंगे। –

6

यदि आप निब लोडिंग प्रक्रिया को पढ़ते हैं और समझते हैं तो फ़ाइल के स्वामी संदर्भ के अर्थ को समझना आसान होता है।

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

कोको के चौखटे कई निब भार से एक के साथ, आपकी ओर से स्वचालित रूप से संभाल कोको के स्वयं निर्मित नियंत्रक वर्ग कि प्रबंधन करता है, या "मालिक" निब फ़ाइल के instantiated वस्तुओं के रूप में सेवारत कक्षाएं। जब आप मैन्युअल रूप से अपने स्वयं के निब्स लोड करते हैं, तो आप यह चुनने के लिए चुनते हैं कि कौन सी कक्षा फाइल के मालिक के रूप में काम करेगी।

जब आप निब लोडिंग प्रक्रिया के बारे में पढ़ते हैं, तो लोडिंग विधियों पर "स्वामी:" पैरामीटर पर ध्यान दें। यह वास्तव में यह ऑब्जेक्ट है जो आपकी निब फ़ाइल में ऑब्जेक्ट्स से जुड़ा होगा क्योंकि फाइल के मालिक

+0

ताकि यह समेकित किया जा सके कि: फ़ाइल का मालिक बिल्कुल वह ऑब्जेक्ट है जिसने निबफाइल को तत्काल/लोड किया है, ताकि निब उस वस्तु की संपत्ति की तरह कुछ हो। तो यह वस्तु निर्माता है, तो चलिए उस निबफाइल के मालिक को कहें। सही? – Thanks

+1

यह अधिकतर सही है, छोटी सी चेतावनी के साथ कि कोई वस्तु मालिक के रूप में नामित किए बिना एक निब फ़ाइल लोड/तत्काल लोड कर सकती है। चूंकि स्वामी को एक तंत्र को लोड करने के लिए पैरामीटर के रूप में पारित किया जाता है, इसलिए एक ऑब्जेक्ट एक निब लोड कर सकता है, जो किसी अन्य ऑब्जेक्ट को स्वामी के रूप में जोड़ता है। – danielpunkass

+0

असल में, जब आप निब लोड करते हैं, तो आप कहते हैं "यहां से कुछ वस्तुओं में लोड करें; यह ऑब्जेक्ट [मालिक:] उनका मालिक है। "आप कह सकते हैं कि आप उनका स्वामी हैं, या आप कह सकते हैं कि एक और ऑब्जेक्ट उनका मालिक है; आप मालिक को सेट करके ऐसा करते हैं: स्वयं या किसी अन्य ऑब्जेक्ट पर। –

4

इसे समझाने का सबसे अच्छा तरीका यह है कि इसे कैसे सेट अप करें। मान लीजिए कि आपके पास NSWindowController सबक्लास है जो प्राथमिकता विंडो के लिए नियंत्रक है। प्राथमिकता विंडो एनआईबी में है "प्राथमिकताएं" कहा जाता है।

- (id)init { 
    if (self = [super initWithWindowNibName:@"Preferences"]) { 
     //do initalisation 
    } 
    return self; 
} 

इस विंडो नियंत्रक initialises, आवेदन के मुख्य बंडल में निब से संबद्ध नामित "वरीयताएँ":

अपने NSWindowController उपवर्ग में आप निम्नलिखित init विधि होगा। ध्यान दें कि एनआईबी अभी तक लोड नहीं हुआ है (यह तब होगा जब आप पहली बार विंडो नियंत्रक पर कॉल करें।

प्राथमिकताएं एनआईबी में आप फ़ाइल के स्वामी आइकन पर क्लिक करेंगे और फिर क्लास इन्फो पैनल पर जाएं इंस्पेक्टर। यहां आप कक्षा को अपने विंडो नियंत्रक वर्ग (जैसे प्राथमिकता नियंत्रक) के नाम पर सेट करेंगे। यह अब आपके विंडो नियंत्रक के उदाहरण का प्रतिनिधित्व करता है ताकि आप आउटलेट और क्रियाओं को जोड़ सकें।

आईबी में संपादन करते समय यह ऑब्जेक्ट का सिर्फ एक प्रॉक्सी है, जैसा कि आप किसी भी ऑब्जेक्ट को एनआईबी पर खींचते हैं, लेकिन जब एनआईबी लोड होता है तो इसे आपके द्वारा बनाए गए विंडो नियंत्रक पर सेट किया जाएगा।

29

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

जब भी एक निब फ़ाइल डिफ्रॉस्ट किया जाता है, तो उसे उस ऑब्जेक्ट को पॉइंटर की आवश्यकता होती है जो इसे डिफ्रॉस्ट करता है। और वह ऑब्जेक्ट आमतौर पर फ़ाइल का स्वामी होता है। फ़ाइल का मालिक nib फ़ाइल के अंदर ऑब्जेक्ट्स को एक्सेस करने की अनुमति देता है जो nib फ़ाइल को डिफ्रॉस्टेड से पहले मौजूद था। एक तरह से, फ़ाइल का मालिक नए भारित वस्तुओं और पुरानी वस्तुओं के बीच एक पुल के रूप में कार्य करता है।

+1

धन्यवाद, अच्छे उदाहरण का उपयोग करके अच्छी व्याख्या। –

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

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