0

Xcode を 4.2 に更新した後、retainCount が常に -1 に等しいことに気付きました。私は自分のプロジェクトでARCを使用しておらず、新しいプロジェクトを作成しようとして、プロジェクト設定でARCオプションをオフに切り替えましたが、次の行は本当に奇妙に機能します:

NSString *string = [[NSString alloc] init];
NSLog(@"%i", [string retainCount]);   //-1
[string retain];
[string retain];
[string retain];
NSLog(@"%i", [string retainCount]);   //still -1
[string release];
[string release];
[string release];
NSLog(@"%i", [string retainCount]);   //still -1

私は何かが恋しいですか?ARCオプションをオフにすると、プロジェクトは以前とまったく同じように機能すると思いました..

4

1 に答える 1

6

最初に、これを前置きして、 を呼び出している場合retainCountは、おそらく何か間違ったことをしているということを述べさせてください。このメソッドは、低レベルのフレームワーク コードを記述する人だけが使用する必要があり、その場合でもデバッグ時にのみ使用する必要があります。-retainCount呼び出しが非常に誤解を招くように、オブジェクトが保持され、背後で自動解放される場合があります。

とにかく、答えは[[NSString alloc] init]シングルトンオブジェクトを返すことだと思います。不変で空であるため、 を返すだけで新しい文字列を作成する必要はありません@""

于 2011-11-02T20:49:37.690 に答える