2010-10-19 46 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,它返回一個新創建的自動釋放對象。所以我希望保留數爲1而不是2。有人可以解釋嗎?

回答

5

保留次數並不保證準確,您可能遇到過這種情況。

我做了一個示例項目,其中對象分配/初始化是具有兩個保留計數,則0釋放時,等...

+2

不僅不能保證準確,該文件指出:「你很難從(retainCount)獲得有用的信息」。 – Aderstedt 2010-10-19 16:41:47

+1

http://whentouseretaincount.com在這方面非常有幫助 – seanwolter 2013-03-07 21:31:41

0

另一個原因可以解釋這一點,就是如果你已註冊以獲取插入到NSManagedObjectContext中的對象的通知,然後該對象將被添加到將在該通知中傳遞給您的NSSet中,因此保留計數爲2.