NSLogで使用する「のtoString()」のためのObjective-Cの同等のは、何ですか?
-
12-09-2019 - |
質問
私は私のカスタムクラスでオーバーライドすることができます方法が存在するようにするとき、
NSLog(@"%@", myObject)
と呼ばれ、それは私のオブジェクトの(私が重要と考えるものは何でもか)のフィールドを出力しますか?私はJavaのtoString()
のObjective-Cの同等を探しています推測します。
解決
これは、として宣言description
インスタンスメソッド、あります
- (NSString *)description
ここでの実装例(grahamparksのおかげで)です。
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
他のヒント
あなたの写真のクラスの@implementation
にこれを追加します。
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
あなたがNSObjectのの記述方法をオーバーライドすることができます:
- (NSString *)description
伐採の対象に私はこのブログをお勧めしますObjective-Cの中に、より良いロギング用を投稿します。
あなたが使用できる2つの機能があります。
- (NSString*)description
あなたはすなわち、としてあなたのオブジェクトを入れたときにこれが表示されます。 NSLog
のパラメータ。他の記述機能があります:
- (NSString*)debugDescription
あなたは、デバッグコマンドウィンドウにpo anInstanceOfYourClass
ないときに呼び出されます。あなたのクラスがdebugDescription
機能を持っていない場合は、単にdescription
呼び出されます。
基底クラスのNSObject
がdescription
が実装していますが、それはかなりベアボーンではないことに注意してください。私はあなたのコードでdescription
メソッドを使用する場合は特に、あなたは外の情報を取得したい任意のクラスでdescription
を実装することをお勧めする理由です。あなたのコードでdescription
を使用しない場合、私はあなたにもdebugDescription
は、より詳細な作り、同様debugDescription
を実装勧めます。
この意志出力可能な声ます:
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));