प्रतिनिधि संपत्ति घोषणा में 'कमजोर' और 'असाइन' के बीच अंतर क्या है


87

इस के बीच अंतर Whats:

@property (nonatomic, weak) id  <SubClassDelegate> delegate; 

और इस:

@property (nonatomic, assign) id  <SubClassDelegate> delegate; 

मैं प्रतिनिधियों के लिए संपत्ति का उपयोग करना चाहता हूं।

जवाबों:


153

केवल weakऔर केवल इतना ही अंतर assignहै कि यदि कोई वस्तु किसी weakसंपत्ति को इंगित करती है, तो weakपॉइंटर का मूल्य निर्धारित किया जाएगा nil, ताकि आप कभी भी कचरे तक पहुंचने का जोखिम न उठाएं। यदि आप उपयोग करते assignहैं, तो ऐसा नहीं होगा, इसलिए यदि ऑब्जेक्ट आपके नीचे से डील हो जाता है और आप इसे एक्सेस करने का प्रयास करते हैं, तो आप कचरा एक्सेस करेंगे।

ऑब्जेक्टिव-सी ऑब्जेक्ट के लिए, यदि आप ऐसे वातावरण में हैं जहां आप उपयोग कर सकते हैं weak, तो आपको इसका उपयोग करना चाहिए।


16
क्या आप जानते हैं कि कोको टच फ्रेमवर्क कक्षाओं में से कुछ अभी भी प्रतिनिधियों के लिए असाइनमेंट का उपयोग क्यों कर रहे हैं? उदाहरण के लिए, UISearchDisplayController का प्रतिनिधि अभी भी असाइन किया गया है। इसे कभी अपडेट क्यों नहीं किया गया?
पवांर

@Pwner को लग रहा है कि इसे iOS 8.0
Stavash

यहाँ एक गैर- UITableViewassign@property (nonatomic, assign) id <UITableViewDelegate> delegate;
चित्रित

3
@ChrisNolet क्योंकि शायद वे अभी भी आंतरिक रूप से MRC (मैनुअल रेफरेंस काउंटिंग) का उपयोग कर रहे हैं।
मार्को सेरो

2
आज तक, UITableView के प्रतिनिधि का उदाहरण अब है: @property (गैर-परमाणु, कमजोर, अशक्त) आईडी <UITableViewDelegate> प्रतिनिधि; तो यह अब एक वैध उदाहरण नहीं है।
sdoowhsoj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.