के बाद गुणों और आइवरों के साथ बदलें मैंने एक्सकोड 4.0 में शुरू की गई परियोजना को एआरसी का उपयोग करने के लिए एक्सकोड 4.0 में शुरू की गई परियोजना को बदलने के लिए "ऑब्जेक्टिव सी एआरसी में कनवर्ट करें" विकल्प का उपयोग किया है। उपकरण को मिली त्रुटियों को ठीक करने के बाद, मैं उस प्रक्रिया को कम कर देता हूं जहां माइग्रेशन टूल ने सभी रिलीज़ संदेशों को हटा दिया है और साथ ही साथ मेरे गुणों की घोषणाओं में विशेषताओं को बनाए रखा है। तो अब मेरे पास मेरे सभी गुण हैं जिनमें केवल (nonatomic) विशेषता है। प्रलेखन पढ़ने से मुझे अभी भी स्पष्ट जवाब नहीं है कि क्या करना है।एआरसी माइग्रेशन
तो मेरा प्रश्न है: यदि आप संपत्ति घोषणा में सेटटर अर्थशास्त्र (मजबूत, कमजोर, बनाए रखने, असाइन) के संबंध में कीवर्ड को छोड़ देते हैं, तो एआरसी का उपयोग करते समय गुणों पर डिफ़ॉल्ट विशेषता क्या होती है?
मुझे प्रलेखन में पाया गया कि डिफ़ॉल्ट संपत्ति विशेषता असाइन करें। हालांकि, वे यह भी कहते हैं कि ivars के लिए डिफ़ॉल्ट विशेषता अब, यदि आप इसे छोड़ देते हैं, तो मजबूत है।
मेरे प्रश्न को बेहतर तरीके से समझाने के लिए, यहां एक उदाहरण है। मैं फ़ाइल शीर्षक हम घोषणा की है:
@property (nonatomic) MyClass *objectToUse;
और हमारे कार्यान्वयन में हम सिर्फ
@synthesize objectToUse;
है हम तो कुछ विधि के अंदर लिखते हैं:
self.objectToUse = [[MyClass alloc] init];
हम एक मजबूत बनाया है (बनाए रखें) या कमजोर (असाइन) संदर्भ? यदि हम इसके बजाय
objectToUse = [[MyClass alloc] init];
ivar का उपयोग करके हमने ऑब्जेक्ट प्रतिधारण नीति के बारे में स्थिति बदल दी है? ऐसा लगता है कि अब एआरसी के साथ, स्मृति प्रबंधन के लिए गुणों का उपयोग करने का सबसे अच्छा अभ्यास अब एक ही अभ्यास नहीं है।
यह देखते हुए कि एआरसी माइग्रेशन ने अपनी संपत्ति घोषणाओं से 'बनाए रखने' विशेषता को हटा दिया है, क्या यह संभव है कि एक्सकोड 4.3 के रूप में डिफ़ॉल्ट 'मजबूत' हो गया हो? मेरे पास अभी परीक्षण करने के लिए कंप्यूटर नहीं है, लेकिन यह मुझे आश्चर्य नहीं करेगा। –
यह वास्तव में मुझे भ्रमित करता है, क्योंकि सभी 'बनाए रखने' गुणों को एआरसी द्वारा हटाया जा रहा है जो 'एंट्री' (डिफ़ॉल्ट रूप से) वाले सभी गुणों को छोड़ देता है जिसका अर्थ है कि एआरसी माइग्रेशन के बाद आपको अपनी सभी संपत्ति घोषणाओं को कम करना होगा और जोड़ना होगा एक ही व्यवहार करने के लिए 'मजबूत' विशेषता। यह दिलचस्प है कि 'असाइन' विशेषता वाले प्रतिनिधियों को 'unsafe_unretained' में बदल दिया गया है, जो ठीक है, लेकिन क्या यह संभव है कि' बनाए रखने 'को स्वचालित रूप से 'strong' में बदला नहीं जा सके? – Luka
मेरे लिए माइग्रेटर में एक बग की तरह दिखता है। मुझे लगता है कि एक्सकोड 4.2 –