NSLogで使用する「のtoString()」のためのObjective-Cの同等のは、何ですか?

StackOverflow https://stackoverflow.com/questions/1104746

  •  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呼び出されます。

それだけでオブジェクトのアドレスが表示されます。

基底クラスのNSObjectdescriptionが実装していますが、それはかなりベアボーンではないことに注意してください。私はあなたのコードでdescriptionメソッドを使用する場合は特に、あなたは外の情報を取得したい任意のクラスでdescriptionを実装することをお勧めする理由です。あなたのコードでdescriptionを使用しない場合、私はあなたにもdebugDescriptionは、より詳細な作り、同様debugDescriptionを実装勧めます。

この意志出力可能な声ます:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top