क्या एआरसीक्या एआरसी
मैं copy
(कीवर्ड) को खोजने में कीवर्ड copy
की भूमिका है में "कॉपी" की भूमिका है एआरसी में इस्तेमाल किया जा सकता है, जबकि retain
और release
नहीं किया जा सकता। एआरसी में copy
की भूमिका एमआरसी में copy
की भूमिका के समान है? यदि हां, तो copy
एआरसी में retainCount
+1 बनाते हैं?
और मैं Arche के बारे में माइक राख ब्लॉग देखा है ने कहा:
आप की जरूरत स्पष्ट रूप से ब्लॉक के लिए उसकी पहचान पैरामीटर के रूप में पारित कॉपी करने के लिए:
[myArray addObject: [^{ DoSomethingMagical(); } copy]];
लेकिन जब मैं इस तरह कोड का परीक्षण (copy
का उपयोग किए बिना) यह भी अच्छी तरह से काम करता है।
NSArray *array = [[NSArray alloc] initWithObjects:^{NSLog(@"hahaha");}, nil];
[self test:[array objectAtIndex:0]];
- (void)test:(void (^)(void))completion
{
completion();
}
यह मतलब यह है वहाँ copy
ब्लॉक करने के लिए कोई जरूरत नहीं है कि जब यह एक id
प्रकार के रूप में प्रयोग किया जाता है?
एमआरसी या एआरसी में प्रति का उपयोग करके बनाए रखने की गणना में वृद्धि नहीं होती है। – Rakesh
@ राकेश कहने के लिए अधिक सटीक "एआरसी/एमआरआर में रखरखाव गिनती * हो सकती है" क्योंकि यह एक कार्यान्वयन विस्तार है। NSMutableString के लिए? आपको एक प्रति प्राप्त होती है। एनएसएसटींग के लिए? एक करके गिनती को रोकता है और एक ही वस्तु देता है। – bbum
ध्यान दें कि आपके उदाहरण में ब्लॉक एक स्थिर ब्लॉक की संभावना है और इस प्रकार, आपका कोड केवल संयोग से "काम कर रहा" हो सकता है। – bbum