14

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

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

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

どうもありがとう -ゲイリー-

4

2 に答える 2

54

オブジェクトのメモリアドレスが特に必要な場合(クラスに実装されていない場合、「識別子」と見なすことができると思います)、これを使用できます:

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

これは、特定のクラスのインスタンスが複数あり、どのクラスがいつ解放されるかを判断しようとしている場合に役立ちます。

于 2010-05-27T02:08:26.383 に答える
7

これを試して:

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

これにより、オブジェクトに関するもう少し詳しい情報がコンソールに出力されます。クラスに応じて、メモリアドレスとクラス名、またはより詳細なものを取得します。独自のクラスでより詳細なものを提供したい場合は、このメソッドをオーバーライドして、好きなものを返します。

-(NSString *)description {
    return @"Something useful about this object";
}
于 2009-09-09T12:03:09.997 に答える