2010-10-19 14 views
6

मैं सोच रहा हूँ के बाद 2 है यहाँ कोड के साथ मैं काम कर रहा हूँ है:NSManagedObject गिनती बनाए रखने क्यों एक नव निर्मित प्रबंधित वस्तु की गिनती को बनाए रखने अगर किसी को समझा सकता है 2. है निर्माण

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
Album *newAlbum = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 
NSLog(@"Album retain count: %d", [newAlbum retainCount]); 

के अनुसार insertNewObjectForEntity विधि के लिए प्रलेखन, यह एक नव निर्मित ऑटोरेलेज्ड ऑब्जेक्ट देता है। तो मैं उम्मीद करता हूं कि गिनती गिनती 2 की बजाय 1 हो। क्या कोई समझा सकता है?

उत्तर

5

गिनती गिनती सटीक होने की गारंटी नहीं है, तो आपको ऐसा मामला सामने आ सकता है।

मैं एक नमूना परियोजना है, जिसमें एक वस्तु alloc/init दो की गिनती को बनाए रखने, जब जारी किया गया हो रही थी तो 0, आदि कर दिया है ...

+2

की गिनती गिनती न केवल सटीक होने की गारंटी है , दस्तावेज़ीकरण में कहा गया है कि "यह बहुत ही असंभव है कि आप (retainCount) से उपयोगी जानकारी प्राप्त कर सकते हैं"। – Aderstedt

+1

http://whentouseretaincount.com इस संबंध में बहुत उपयोगी है – seanwolter

0

एक और कारण है कि इस व्याख्या कर सकते हैं, वह यह है कि अगर आप उस NSManagedObjectContext में डाली गई वस्तुओं की अधिसूचनाएं प्राप्त करने के लिए पंजीकृत हैं, फिर ऑब्जेक्ट को उस एनएससेट में जोड़ा जा रहा है जो आपको उस अधिसूचना पर पास कर दिया जाएगा, इसलिए 2.

संबंधित मुद्दे