创建后NSManagedObject保留计数为2

时间:2010-10-19 13:17:48

标签: objective-c ios core-data memory-management

我想知道是否有人可以解释为什么新创建的托管对象的保留计数为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.有人能解释一下吗?

2 个答案:

答案 0 :(得分:5)

保证计数不保证准确,您可能遇到过这样的情况。

我做了一个示例项目,其中一个对象alloc / init的保留计数为2,释放后为0,等等......

答案 1 :(得分:0)

可以解释这一点的另一个原因是,如果您已注册以获取插入该NSManagedObjectContext中的对象的通知,则该对象将被添加到将在该通知上传递给您的NSSet,因此保留计数2。