カスタムクラスでオーバーライドできるメソッドはありますか?
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実装して、より冗長にすることをお勧めします。debugDescriptiondebugDescription