学習を支援するために、保持ログをNSLogに送信できますか?
質問
NS単純なコードでリテンション/リリースがどのように機能するかを知るために、それらをコンソールに出力したいのですが?
歓声-gary-
解決
それは可能であるだけでなく、非常に簡単です:
NSLog(@"retain count=%d",[obj retainCount]);
他のヒント
NSStringで、retainおよびreleaseメッセージを文字列定数に送信できるが、実際には効果がなく、オブジェクトretainCountを変更しないという問題に直面していると思います。以下のコードは動作しますが、NSStringを使用するように変更し、保持/解放は効果がありません。
コード:
#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
ゲイリー
デバッガコンソールでは、次のように入力できます:print(unsigned int)[thing retainCount]
所属していません StackOverflow