2010-10-19 48 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.