2012-10-14 9 views
21

जैसा कि आप here पढ़ते हैं, ज्यादातर मामलों में IBOutlet कमजोर होना चाहिए।एआरसी परियोजना में एनएसटीक्स्ट व्यू के लिए आईबीओलेटलेट

अब जब आप development library में पढ़ सकते हैं तो सभी वर्ग कमजोर संदर्भों का समर्थन नहीं करते हैं। (उदा। NSTextView)। इसका मतलब है आप का उपयोग करने के असाइन:

@property (assign) IBOutlet NSTextView *textView; 

आप एक कमजोर संदर्भ आपको निम्न त्रुटि मिल जाएगा का उपयोग करते हैं: "एक कमजोर-अनुपलब्ध संपत्ति के संश्लेषण की अनुमति नहीं है, क्योंकि यह __weak वस्तु का एक इवर के संश्लेषण की आवश्यकता है "

क्या दस्तावेज उल्लेख करने के लिए चूक गए हैं अब आपको संपत्ति के उपयोग के बाद फिर से संपत्ति को सेट करना है उदाहरण के लिए एक dealloc विधि द्वारा:

- (void)dealloc 
{ 
    self.textView = nil; 
} 

जहां तक ​​मेरा NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE के साथ चिह्नित कमजोर संदर्भ का समर्थन नहीं करते लेकिन क्या कारण है वर्गों समझे?

+0

लिंक किए गए पोस्ट 'आईबीओटलेट्स' के अनुसार डिफ़ॉल्ट रूप से ** मजबूत ** होना चाहिए! – Jay

उत्तर

13

मुझे लगता है कि मैं कारण है कि कुछ वर्गों एक कमजोर संदर्भ का समर्थन नहीं करते पाया:

आप here पढ़ सकते हैं के रूप में:

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

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