【问题标题】:NSManagedObject retain count is 2 after creation创建后 NSManagedObject 保留计数为 2
【发布时间】:2011-04-27 11:49:32
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不仅不能保证准确,文档还指出“您不太可能从 (retainCount) 获得有用的信息”。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2020-06-19
      • 1970-01-01
      • 2011-07-06
      • 2011-10-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多