0

可能重复:
何时使用 -retainCount?

我试图了解自动释放池。我创建了一个示例应用程序,如下所示:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSString *releasePoolString = [[[NSString alloc] initWithFormat:@"%@",@"ReleasePool autorelease variable"] autorelease];

NSLog(@"Retain count of autorelease variable inside release pool %i",[releasePoolString retainCount]);

[pool drain];

// After pool drain still retain count = 1 ??????
NSLog(@"Retain count of autorelease variable after release pool drain %i",[releasePoolString retainCount]);

最后的日志仍然将retaincount打印为1。我是否遗漏了什么......有人可以帮我理解......

谢谢...

4

2 回答 2

4

retainCount 永远不会达到 0,因为当它为 1 并调用 release 时,它​​会立即调用 dealloc 而不会递减 retainCount

于 2012-08-11T09:45:31.563 回答
0

因为 retainCount 不会总是给出对象的准确保留计数。您不应该依赖retainCountAPI 进行内存管理。一旦你分配,保留一个对象,你必须释放那个对象,它的保留计数将变为零。

于 2012-08-11T09:39:01.780 回答