正如其他人所提到的,-retainCount
實際上是無用的。當您不熟悉Objective-C中的內存管理/引用計數時,嘗試使用 - retainCount
來幫助理解引用計數的工作原理有時很誘人,但實際上,它最多可能(看起來)令人困惑。
您發佈的代碼本身具有潛在的危險性,具體取決於您的周圍環境如何使用someObject
。將它應用於其他你並不期望的情況也會很危險。以使用@"a string"
編譯器指令創建的恆定NSString
:這些字符串被創建並設計爲永遠不會被釋放。因此應用代碼就像下面這個例子會導致一個無限循環:
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *string = @"theString";
NSLog(@"retainCount == %lu", (unsigned long)[string retainCount]);
for (NSUInteger i = 0; i < [string retainCount]; i++) {
[string release];
}
[pool drain];
return 0;
}
此打印:
2011-06-30 08:40:16.287 retainCount[35505:a0f] retainCount == 1152921504606846975
,然後進入一個無限循環。
不,這不是釋放內存的好方法。 – Sneakyness
請儘快閱讀Apple的內存管理文檔,其中解釋瞭如何管理內存。永遠不要這樣做。 – 2011-06-30 17:15:51