2009-09-09 9 views
12

クラスのdeallocメソッドで、割り当て解除されるインスタンスのID(または他の一意の識別子)をどのように出力しますか?NSLogにインスタンスIDを出力しますか?

- (void)dealloc { 
    NSLog(@"_deallocing: ??"); 
    [super dealloc]; 
} 

これは可能ですか?私はちょうど学習の助けとしてコンソールでもう少しフィードバックを得ようとしています。

- (void)dealloc { 
    NSLog(@"_deallocing: %@", self); 
    [super dealloc]; 
} 

この意志出力コンソールにオブジェクトについて少し詳細情報:

答えて

6

-gary-

多くのおかげで、これを試してみてください。クラスに応じて、メモリアドレスとクラス名などを取得します。

-(NSString *)description { 
    return @"Something useful about this object"; 
} 
+0

優れているので、「自己」はクラスのデフォルトの説明に単にアクセスしていると仮定できますか? – fuzzygoat

+0

NSLog()関数は%@を指定されたオブジェクトの説明で置き換えます。 NSObjectの記述メソッドは、デフォルトの値を提供します。 NSLogで役に立つことの詳細については、こちらをご覧ください。http://www.cocoadev.com/index.pl?NSLog – iKenndac

+0

別のクラスのIDをお持ちの場合はどうなりますか?例えば。私はメンバ変数 'NSMutableArray'を持っており、インスタンスIDを出力したいと思います。 –

52

あなたは、特に私は「考えることができると仮定したオブジェクト(のメモリアドレスが必要な場合:あなたは、独自のクラスでは、より詳細な何かを与える、このメソッドをオーバーライドして、あなたが好きなものは何でも返したい場合識別子」あなたはクラスで実装さ1)を持っていない場合、あなたはこれを使用することができます:

NSLog(@"deallocing %p", self); 

あなたが特定のクラスの複数のインスタンスを持っているかを決定しようとしている場合、これはかなり参考にすることができときにdealloc'dを得る。

+0

dmkashありがとう、それは良い点です、多くの感謝します。 – fuzzygoat

+0

文字列フォーマット指定子に関するドキュメント:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html – LopSae

関連する問題