カスタムクラスでオーバーライドできるメソッドはありますか?
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];
}
debugDescriptionも予約?DebugDescriptionLLDBのようなデバッガーで使用されることになっていると思いますが。
これを@implementationPhotoクラスのに追加します。
- (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さらに冗長にすることをお勧めします。
descriptionプロパティは予約されており、役立つデバッグ情報を提供します。その場合は、独自のメソッド名を作成する必要があります。