2011-08-23 10 views
9

एक डूप की तरह मैं तत्काल चर (iVar) और फिर @property को इंटरफ़ेस में .h फ़ाइल को थोड़ी देर के लिए घोषित कर रहा था।क्या मुझे स्वचालित संदर्भ गणना (एआरसी) के तहत iVar और @property (nonatomic, retain) प्लस @ सिंथेसाइज़ का उपयोग करना जारी रखना चाहिए?

@interface MainGameViewController : UIViewController { 
    UserFactorsViewController *userFactorsViewController; 
    UITableView *myTableView; 
} 
@property (nonatomic, retain) UserFactorsViewController *userFactorsViewController; 
@property (nonatomic, retain) IBOutlet UITableView *myTableView; 

स्वत: संदर्भ गिनती के तहत, मैं सिर्फ इवर साथ बांटना और सभी @property जाना चाहिए? क्या मुझे संपत्ति में "बनाए रखने" शब्द भी होना चाहिए? अगर मैं आईओएस 4.3 के लिए तैनाती कर रहा हूं तो क्या होगा, क्या मुझे अभी भी एआरसी का उपयोग करना चाहिए?

उत्तर

10

एक डूप की तरह महसूस न करें, भले ही संकलक आपके लिए ivars जोड़ देगा, यदि आप उन्हें शामिल नहीं करते हैं, तो भी कई लोग कोड को थोड़ा आसान बनाने के लिए उन्हें (कई पुस्तक लेखकों) घोषित करते हैं पढ़ें (ivar और संपत्ति के बीच अंतर करने के लिए आसान)।

अब संपत्ति बनाते समय, ऐप्पल चाहता है कि आप ऑब्जेक्ट ग्राफ के संदर्भ में सोचें, इसलिए बनाए रखने और रिलीज़ करने के बजाय "मजबूत" और "कमजोर" संपत्ति विशेषताओं पर कुछ शोध करें।

इसके अलावा, आईओएस 4 एआरसी के लिए एक लक्ष्य के रूप में स्थापित है ताकि आपको ठीक होना चाहिए। लेकिन मेरा मानना ​​है कि यदि आप आईओएस 3.0 का समर्थन करना चाहते हैं तो आपको मैन्युअल रूप से पहले से बनाए रखने और रिलीज़ करना होगा।

+0

धन्यवाद। लेकिन हालांकि एआरसी के तहत ऐसा करने का "सही" तरीका क्या है? क्या मुझे सिर्फ संपत्ति होनी चाहिए और बाकी का ख्याल रखना चाहिए? और मेरे पास हर STRONG ऑब्जेक्ट वेरिएबल के लिए केवल संपत्ति (nonatomic) डालें? – Ben

+2

'@property (nonatomic, strong) UserFactorsViewController * userFactorsViewController;' '@property (nonatomic, strong) IBOutlet UITableView * myTableView;' – 5StringRyan

+0

आपको बहुत धन्यवाद हंस। इसकी प्रशंसा करना। – Ben