学習を支援するために、保持ログをNSLogに送信できますか?

StackOverflow https://stackoverflow.com/questions/1407517

  •  05-07-2019
  •  | 
  •  

質問

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]

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top