Obj-C:在dealloc方法中retainCount> 1?

neb*_*ebs 0 iphone memory-management objective-c retain

如果在释放之前dealloc方法中对象的保留(引用)计数大于1,这是否意味着内存泄漏?

我正在调试我的代码以找到另一个问题,但后来遇到了这个微妙的问题.在dealloc方法中,我的一个对象的保留计数是3.此对象是具有retain的属性,仅在类中调用.现在我想在dealloc方法中所有对象的保留计数应该是1,然后才能正确释放?

这是自定义类中的dealloc方法示例:

- (void)dealloc {
    // Prints: "myObject retaincount: 3"
    NSLog(@"myObject retaincount: %d", [myObject retainCount]);

    // myObject retain count will be 2 after this call
    [myObject release];

    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?

小智 6

来自Apple关于-retainCount:

重要说明:此方法在调试内存管理问题时通常没有价值.因为任何数量的框架对象可能保留了一个对象以保存对它的引用,而同时自动释放池可能在对象上保留任意数量的延迟版本,所以您不太可能从此获取有用信息方法.