2011-10-14 14 views
14

मैं थोड़ा उलझन में हूं कि एआरसी कैसे काम करता है, मुझे पता है कि स्वचालित संदर्भ गिनती है लेकिन क्या यह कार्यक्षमता कच्चे इंस्टेंस चर (गुणों का उपयोग नहीं करने) के लिए भी काम करती है।आईओएस 5 इंस्टेंस वैरिएबल

उदाहरण के लिए, मैं एक उदाहरण चर arr अगर:

@interface TestClass : NSObject { 
    NSArray *arr; 
} 

अब अगर एक विधि मैं इस आवंटित एक का उपयोग कर अंदर ऑटो जारी किया NSArray:

- (IBAction)test { 
    arr = [NSArray arrayWithObject:@"TEST"]; 
} 

इस सरणी के लिए क्या होता है? क्या यह जादूगर रूप से इसे arr तक किसी अन्य चीज़ पर फिर से सौंप दिया जाता है?

self.arr = [NSArray arrayWithObject:@"TEST"]; 

अगर यह मजबूत बनाम कमजोर है क्या होता है:

अब अगर मैं की तरह कुछ करते हैं?

+3

मैं एआरसी रिलीज नोट्स दस्तावेज़ में ऐप्पल के संक्रमण को पढ़ने की सिफारिश करता हूं। – ditkin

+0

और सुविधा के लिए: http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html –

उत्तर

18

हां, एआरसी कच्चे ivar पहुंच पर काम करता है। स्थानीय चर की तरह, ivars __strong स्पष्ट रूप से __weak या __unsafe_unretained से सजाए गए हैं। इसलिए, वे डिफ़ॉल्ट रूप से, ऐसी संपत्ति की तरह कार्य करेंगे जिसे strong (या retain चिह्नित किया गया है, जो एआरसी के तहत strong के लिए समानार्थी है)।

+0

केविन, क्या 'copy' अर्थ विज्ञान अगर साथ एक' @ synthesize'd संपत्ति के साथ होता है आप सीधे संश्लेषित ivar तक पहुंचते हैं। क्या संकलक एक 'प्रतिलिपि' डालें? –

+0

@StevenKramer: नहीं। सीधे इवर तक पहुंच * हमेशा * संपत्ति के स्मृति प्रबंधन अर्थशास्त्र को अनदेखा करता है। एकमात्र समय यह महत्वपूर्ण है कि एक संश्लेषित ivar उस संपत्ति के कमजोर/मजबूत अर्थशास्त्र को उठाएगा जिसे इसे संश्लेषित किया जा रहा है) –

+0

जानकारी केविन के लिए धन्यवाद। बस डीबगर में यह सत्यापित किया। थोड़ा सा अजीब, लेकिन समझा जा सकता है, मुझे लगता है कि पसंद है। –

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