173

カスタムクラスでオーバーライドできるメソッドはありますか?

      NSLog(@"%@", myObject) 

が呼び出されると、オブジェクトのフィールド (または私が重要と考えるもの) を出力しますか? 私は Java の に相当する Objective-C を探していると思いtoString()ます。

4

6 に答える 6

253

これは、次のdescriptionように宣言されたインスタンス メソッドです。

- (NSString *)description

実装例を次に示します (grahamparks に感謝):

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
于 2009-07-09T15:49:57.497 に答える
36

@implementationこれをPhoto クラスの に追加します。

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
于 2009-07-09T15:57:15.703 に答える
24

NSObject の説明メソッドをオーバーライドできます。

- (NSString *)description

ロギングに関しては、Objective-C でのロギングを改善するために、このブログ投稿をお勧めします。

于 2009-07-09T15:46:26.273 に答える
13

使える機能は2つ。

- (NSString*)description

これは、オブジェクトを IE のパラメータとして配置すると表示されますNSLog。他の記述関数は次のとおりです。

- (NSString*)debugDescription

po anInstanceOfYourClassこれは、デバッグ コマンド ウィンドウで行うと呼び出されます。クラスに関数がない場合はdebugDescription、単にdescription呼び出されます。

基本クラスNSObjectdescription実装されていることに注意してください。ただし、それはかなり必要最小限のものであり、オブジェクトのアドレスを表示するだけです。descriptionこれが、特にコードでメソッドを使用する場合に、情報を取得したいクラスに実装することをお勧めする理由descriptionです。コードで使用する場合は、同様にdescription実装して、より冗長にすることをお勧めします。debugDescriptiondebugDescription

于 2013-01-18T01:15:55.790 に答える