मैं एक अनुभवी आईओएस देव हूं और मैंने कुछ ऐपकिट विकास में अपना हाथ लगाने का फैसला किया है। कुछ समायोजन हैं जो मैं एपीआई-वार बना रहा हूं, लेकिन अन्यथा ओएस एक्स विकास को ढूंढ रहा हूं, क्या हम कहेंगे, 'परिचित'।ऐपकिट में विकास करते समय, आईबी एक संपत्ति क्यों बनाती है जो रखती है, बजाय बनाए रखने के बजाय?
मैं इंटरफ़ेस बिल्डर में मेरी AppKit UI के निर्माण किया गया है और पाया है कि जब मैं WYSIWYG संपादक का उपयोग अपने कोड फाइलों में गुण पैदा करने के लिए, एप्पल निम्नलिखित पैदा कर रही है:
@property (assign) IBOutlet NSTableView *tableView;
मैं इस बहुत ही उत्सुक लगता है क्योंकि आईओएस में काम करने के डिफ़ॉल्ट तरीका मुझे नेतृत्व है | यह करने के लिए:
@property (nonatomic, retain) IBOutlet NSTableView *tableView;
मुझे लगता है कि मैं एक ही स्मृति की कमी है कि मैं मोबाइल पर कर की जरूरत नहीं है मैक विकास में, जहां एक दृश्य मिल सकता है अनलोड किया गया और मजबूत संदर्भ की आवश्यकता हो सकती है यूआई तत्वों के लिए ences।
ऐपकिट मामले में मैं बहुत अच्छी तरह से मान सकता हूं कि मेरे यूआई तत्व हमेशा तब तक रहेंगे जब तक कि मैं दृश्य पदानुक्रम के साथ परेशान न हो और इसे अपने मूल दृश्य से हटा दूं। अनजाने में खतरनाक पॉइंटर्स तक पहुंचने से बचने के लिए हर समय एक मजबूत संदर्भ होना प्रतीत होता है।
ऐप्पल एक मजबूत व्यक्ति के बजाय यहां एक कमजोर संदर्भ क्यों बना रहा है?
क्या मैं मजबूत संदर्भों का उपयोग करके कुछ अनपेक्षित परिणामों के लिए खुद को स्थापित कर रहा हूं (लेकिन dealloc
में ठीक से रिलीज़ हो रहा है)? क्या यहां कुछ पैटर्न है कि मुझे याद आ रही है?
मुझे डर है कि इस सवाल का जवाब होने जा रहा था, लेकिन बहुत अच्छी तरह से समझाया था, फिर भी। –
तो हमें अभी भी 'dealloc' में' [tableView रिलीज़] 'की आवश्यकता होगी? यदि हां, तो एआरसी का उपयोग करते समय 'रिलीज' कब कॉल किया जाता है? – MrMage
@MrMage: आप आमतौर पर टेबल व्यू का स्वामित्व नहीं रखते हैं, क्योंकि आप इसे सामान्य रूप से खिड़की या कंटेनर व्यू में रख सकते हैं, न कि निब के शीर्ष स्तर पर। आपके पास विंडो या शीर्ष-स्तरीय दृश्य होगा, और बस तालिका दृश्य के बारे में जानें। जो भी आप स्वयं करते हैं, आपको रिलीज़ करना होगा। –