、-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
可能な限り早急にアップルのメモリ管理マニュアルをお読みください。メモリの管理方法が説明されています。決してこれをしないでください。 –