我想知道是否有人可以解释为什么新创建的托管对象的保留计数为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.有人能解释一下吗?
答案 0 :(得分:5)
保证计数不保证准确,您可能遇到过这样的情况。
我做了一个示例项目,其中一个对象alloc / init的保留计数为2,释放后为0,等等......
答案 1 :(得分:0)
可以解释这一点的另一个原因是,如果您已注册以获取插入该NSManagedObjectContext中的对象的通知,则该对象将被添加到将在该通知上传递给您的NSSet,因此保留计数2。