Objective c 创建后NSManagedObject保留计数为2

Objective c 创建后NSManagedObject保留计数为2,objective-c,ios,core-data,memory-management,Objective C,Ios,Core Data,Memory Management,我想知道是否有人可以解释为什么新创建的托管对象的保留计数为2。以下是我正在使用的代码: NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; Album *newAlbum = [NSEntityDescri

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

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


我制作了一个示例项目,其中一个对象alloc/init的retain计数为2,然后在发布时为0,等等。

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

不仅不能保证其准确性,文档中还指出“您很可能无法从(重新计数)中获得有用的信息”。