आप अपनी कुछ अन्य टिप्पणियों में एक BAD_ACCESS समस्या का वर्णन करते हैं। यहां कुछ और चल रहा है। एआरसी में, आपके इवर्स तब तक मजबूत होते हैं जब तक कि अन्यथा योग्य नहीं हो (और गैर-एआरसी में, वे आपकी तरफ से रिहा नहीं होने जा रहे हैं)।
उदाहरण के लिए, इस एआरसी कोड ठीक काम करता है, कोई BAD_ACCESS साथ के रूप में आप अन्य उत्तर देने के लिए अपनी टिप्पणी में रिपोर्ट:
@interface ArcTestViewController()
{
NSMutableArray *_someArray;
}
@end
@implementation ArcTestViewController
- (void)dealloc
{
_someArray = nil;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_someArray = [[NSMutableArray alloc] initWithObjects:@"Mo", @"Larry", @"Curly", nil];
}
- (IBAction)checkIvarTouchUpInside:(id)sender
{
NSLog(@"%s _someArray = %@", __FUNCTION__, _someArray);
}
@end
आप हमें अपने उदाहरण है जहाँ आप अपने BAD_ACCESS क्योंकि यह हो रही है दिखाने के लिए हो सकता है कुछ और होना है।
"संपत्ति" या "ivar" प्रश्न के उत्तर में, जबकि मैं "हमेशा उपयोग गुणों" तर्क के प्रति सहानुभूतिशील हूं, व्यक्तिगत रूप से मैं उन चीज़ों के लिए गुणों का उपयोग करता हूं जिनके लिए मुझे बाहरी एक्सेसर्स प्रदान करने की आवश्यकता है और मैं अन्यथा निजी का उपयोग करता हूं ivars (.h में नहीं, बल्कि .m फ़ाइल में निजी इंटरफ़ेस में)। यह मेरी सार्वजनिक इंटरफेस को मेरी .h फ़ाइलों में वास्तव में साफ और समझने में आसान बनाता है जब मैं महीनों बाद उनके पास वापस आ जाता हूं। यदि आप "हमेशा उपयोग गुणों" दृष्टिकोण को अपनाते हैं, तो मैं केवल सलाह दूंगा कि उन संपत्तियों की आपकी सार्वजनिक घोषणा यथासंभव सीमित होनी चाहिए (अगर आप कर सकते हैं तो संपत्ति को निजी बनाएं, यदि आप डॉन करते हैं तो संपत्ति की सार्वजनिक घोषणा को पढ़ें रीडराइट एक्सेस, आदि प्रदान करने की आवश्यकता नहीं है)।
वैसे, कोको के लिए कोडिंग दिशानिर्देश सर्वोत्तम प्रथाओं का एक अच्छा संदर्भ है।
धन्यवाद, और मैं समझता हूं कि एआरसी गुणों के साथ कैसे काम करता है, लेकिन मेरा प्रश्न वास्तव में यह निर्धारित करना है कि अब स्थानीय चर को निजी गुणों के साथ बदला जाना चाहिए (अगर हम उन्हें बनाए रखना चाहते हैं)? –
@ बिलकर्वस्की: आम तौर पर, हाँ। संपादित करें – houbysoft
ऐप्पल आपको अनुशंसा करता है कि जब तक आपको आवश्यकता न हो, तब तक वे स्पष्ट रूप से चर घोषित नहीं करेंगे। गुणों का उपयोग करें, और, यदि आपको iVar तक सीधे पहुंच की आवश्यकता है, तो आप संपत्ति को संश्लेषित करते समय ivar नाम सेट कर सकते हैं, उदाहरण के लिए: @synthesize myProperty = __myVariable – isaac