2012-08-11 56 views
0

可能重複:
When to use -retainCount?後,保留自動釋放變量的數量仍爲1不應該是零

我試圖理解自動釋放池。我創建了一個示例應用程序如下:

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 我缺少的東西...有人可以幫助我瞭解....

謝謝...

+3

http://whentouseretaincount.com – bbum 2012-08-11 14:18:35

+1

請你幫個忙,並使用ARC的dealloc。它現在是默認設置,幾乎適用於所有人。 – 2012-08-11 18:54:33

回答

0

因爲retainCount不會給一個對象的確切保留計數。您不應該依賴retainCount API進行內存管理。一旦你分配,保留一個對象,你必須釋放該對象,其保留計數將變爲零。

4

retainCount從未達到0,因爲當它是1和釋放被調用時,它會立即調用,而遞減retainCount

相關問題