Iphone 排空自动释放池后,自动释放变量的保留计数仍为1。不应该';不可能是零

Iphone 排空自动释放池后,自动释放变量的保留计数仍为1。不应该';不可能是零,iphone,ios,ipad,Iphone,Ios,Ipad,可能重复: 我试图理解自动释放池。我创建了一个示例应用程序,如下所示: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSString *releasePoolString = [[[NSString alloc] initWithFormat:@"%@",@"ReleasePool autorelease variable"] autorelease]; NSLog(@"Retain count of autore

可能重复:

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

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。 我是不是错过了什么。。。谁能帮我理解一下


谢谢…

,因为retainCount不会始终给出对象的精确retain计数。内存管理不应依赖于
retainCount
API。一旦您分配、保留一个对象,您必须释放该对象,其保留计数将变为零。

因为重新计数不会始终给出对象的准确保留计数。内存管理不应依赖于
retainCount
API。一旦您分配、保留一个对象,您必须释放该对象,其保留计数将变为零。

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

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

帮自己一个忙并使用ARC。现在这是默认设置,建议几乎每个人都使用。帮自己一个忙,使用ARC。它现在是默认设置,并且建议几乎所有人使用。