NSLog を使用してオブジェクトの保持カウントを表示する方法があるかどうかに興味があります。簡単なコードで保持/解放がどのように機能しているかを知るために、それらをコンソールに出力したいだけですか?
乾杯 -ゲイリー-
可能であるだけでなく、非常に簡単です。
NSLog(@"retain count=%d",[obj retainCount]);
保持メッセージと解放メッセージを文字列定数に送信できる NSString で問題が発生している可能性があると思いますが、実際にはオブジェクトの保持カウントを変更したり変更したりしません。以下のコードは機能します。NSString を使用するように変更し、retain / release は効果がありません。
コード:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableString *myString = [[NSMutableString alloc] initWithString:@"AB"];
NSLog(@"RC: %d", [myString retainCount]);
[myString retain];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
[pool drain];
return 0;
}
出力:
Running…
TESTBED[12306:a0f] RC: 1
TESTBED[12306:a0f] RC: 2
TESTBED[12306:a0f] RC: 1
ゲイリー
デバッガー コンソールでは、次のように入力できます。