「warn_unused_result」属性で宣言された関数の戻り値を無視する 質問する

「warn_unused_result」属性で宣言された関数の戻り値を無視する 質問する

becomeFirstResponderObjective-C コード内のすべての関数呼び出しでこの警告が表示されるようになります。

「warn_unused_result」属性で宣言された関数の戻り値を無視する

[self.phoneNumberField becomeFirstResponder]; // warning here!!!

ここでこの警告を抑制する最善の方法は何ですか?


編集:私もこれを試してみました、

BOOL ignore = [self.emailField becomeFirstResponder]; 

しかし、そうすると、Xcode は変数ignoreが使用されていないという警告を表示します :(


私もこれを試してみました、

BOOL ignore = [self.phoneNumberField becomeFirstResponder];
if (ignore) {

}

この場合、警告は消えます。しかし、自分のコードレビューさえ通過できないと思います。あまりにも醜いです!

ベストアンサー1

式を void 式にキャストすると機能するはずです。

(void)[self.emailField becomeFirstResponder]; 

(私も警告を再現できません。ただし、これは警告フラグに依存する可能性があります。)

あなたの編集へ:

BOOL ignore = [self.emailField becomeFirstResponder]; 

おそらく

BOOL ignore = [self.emailField becomeFirstResponder]; 
ignore = ignore;
// or
(void)ignore;

警告は削除されるはずです。(私のフラグでは削除されました。) しかし、これも醜いハックです。

ところで、属性には理由があります。戻り値をテストしないのが良い考えかどうか、再確認したほうがよいかもしれません。

おすすめ記事