मेरे सवाल यह है कि फाउंडेशन के वर्तमान संस्करण NSObject
ली गई वस्तुओं के लिए गिनती बनाए रखने को लागू (या ऑब्जेक्टिव-सी क्रम पुस्तकालय की है, क्योंकि यह वहाँ हो रहा है) क्या है? मैं NSObject.mm पर देख सकते हैं के रूप में, वहाँ कोई इवर NSObject
के इंटरफ़ेस शरीर में retain count
कहा जाता है। इसके बजाए, ऐसा लगता है कि प्रत्येक वस्तु के लिए संदर्भ काउंटर शामिल हैं। लेकिन अगर गिनती बनाए रखने वास्तव में एक नक्शे के साथ किया जाता है कार्यान्वयन (इस तरह से भी महंगा retain
और release
संचालन नहीं कर रहे हैं के बाद से, इस मामले में, यह आवश्यक लॉक करने के लिए और mutexes अनलॉक, नक्शे देखने सही वस्तु को खोजने के लिए, के अलावा है तथ्य यह है कि, एक बहुप्रचारित वातावरण में, एक ही समय में केवल एक वस्तु को बनाए रखा/जारी किया जा सकता है)?NSObject में कार्यान्वित गिनती कैसे बनाए रखी जाती है?
मैं जब एक नया वस्तु का आवंटन 1 के लिए काउंटर बनाए रखने की स्थापना, न NSObject.mm पर _objc_rootAllocWithZone
है और न ही (जो समारोह है कि [NSObject alloc]
द्वारा कहा जाता है हो रहा है) में से संबंधित कुछ भी नहीं मिला objc-runtime-new.mm पर _class_createInstanceFromZone
(कि हो जाता है में बाद में _objc_rootAllocWithZone
द्वारा बुलाया गया)।
- (NSUInteger) retainCount {वापसी रैंड()}; – CodaFi
ओह अच्छा भगवान, मैंने समाप्ति को गलत स्थान दिया है; ... मैं आज रात सो नहीं पाऊंगा। – CodaFi