カスタムクラスでオーバーライドできるメソッドはありますか?
NSLog(@"%@", myObject)
が呼び出されると、オブジェクトのフィールド (または私が重要と考えるもの) を出力しますか? 私は Java の に相当する Objective-C を探していると思いtoString()
ます。
カスタムクラスでオーバーライドできるメソッドはありますか?
NSLog(@"%@", myObject)
が呼び出されると、オブジェクトのフィールド (または私が重要と考えるもの) を出力しますか? 私は Java の に相当する Objective-C を探していると思いtoString()
ます。
これは、次のdescription
ように宣言されたインスタンス メソッドです。
- (NSString *)description
実装例を次に示します (grahamparks に感謝):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
@implementation
これをPhoto クラスの に追加します。
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
NSObject の説明メソッドをオーバーライドできます。
- (NSString *)description
ロギングに関しては、Objective-C でのロギングを改善するために、このブログ投稿をお勧めします。
使える機能は2つ。
- (NSString*)description
これは、オブジェクトを IE のパラメータとして配置すると表示されますNSLog
。他の記述関数は次のとおりです。
- (NSString*)debugDescription
po anInstanceOfYourClass
これは、デバッグ コマンド ウィンドウで行うと呼び出されます。クラスに関数がない場合はdebugDescription
、単にdescription
呼び出されます。
基本クラスNSObject
がdescription
実装されていることに注意してください。ただし、それはかなり必要最小限のものであり、オブジェクトのアドレスを表示するだけです。description
これが、特にコードでメソッドを使用する場合に、情報を取得したいクラスに実装することをお勧めする理由description
です。コードで使用する場合は、同様にdescription
実装して、より冗長にすることをお勧めします。debugDescription
debugDescription