web-dev-qa-db-ja.com

NSLogで使用するための、 "toString()"に相当するObjective-Cとは何ですか?

カスタムクラスでオーバーライドできるメソッドがあるので、

_      NSLog(@"%@", myObject) 
_

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

167
George Armhold

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

- (NSString *)description

実装例は次のとおりです(grahamparksに感謝):

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
247
zakovyrya

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

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
35
grahamparks

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

- (NSString *)description

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

24
teabot

使用できる関数は2つあります。

- (NSString*)description

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

- (NSString*)debugDescription

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

基本クラスNSObjectにはdescriptionが実装されていることに注意してください。ただし、基本クラスであり、オブジェクトのアドレスのみを表示します。そのため、特にコードでdescriptionメソッドを使用する場合は、情報を取得するクラスにdescriptionを実装することをお勧めします。コードでdescriptionを使用する場合は、debugDescriptionも実装し、debugDescriptionをより冗長にすることをお勧めします。

13
MaddTheSane

これにより、利用可能な音声が出力されます。

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
1
grigb