忽略使用"warn_unused_result"属性声明的函数的返回值

Yuc*_*ong 14 objective-c xcode8

我们becomeFirstResponder在Objective-C代码中的所有函数调用上开始发出此警告.

忽略使用"warn_unused_result"属性声明的函数的返回值

[self.phoneNumberField becomeFirstResponder]; // warning here!!!
Run Code Online (Sandbox Code Playgroud)

在这里抑制此警告的最佳方法是什么?


编辑:我也试过这个,

BOOL ignore = [self.emailField becomeFirstResponder]; 
Run Code Online (Sandbox Code Playgroud)

但有了这个,Xcode警告有关变量ignore没有使用:(


我也尝试过这个,

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

}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,警告消失了.但我认为我甚至无法通过自己的代码审查.太难看了!

Ami*_*wad 38

它应该可以将表达式转换为void表达式.

(void)[self.emailField becomeFirstResponder]; 
Run Code Online (Sandbox Code Playgroud)

(即使我无法重现警告.但是,这可能取决于警告标志.)

要编辑:

BOOL ignore = [self.emailField becomeFirstResponder]; 
Run Code Online (Sandbox Code Playgroud)

容易

BOOL ignore = [self.emailField becomeFirstResponder]; 
ignore = ignore;
// or
(void)ignore;
Run Code Online (Sandbox Code Playgroud)

应该删除警告.(这与我的旗帜有关.)然而,这也是一个丑陋的黑客.

顺便说一句:这个属性有一个原因.也许你应该重新检查,是否是一个好主意,而不是测试返回值.

  • (void)[self.emailField 成为FirstResponder]; 奇迹般有效! (2认同)

tur*_*ted 6

如果您有一个从 Objective-C 代码调用的 Swift 函数,您可能会收到此警告。您可以通过@discardableResult在 Swift 中的函数之前添加来使其静音,如下所示:

@objc @discardableResult func yourFanzyFuncInSwift(argument: String) -> Bool { ... }
Run Code Online (Sandbox Code Playgroud)

似乎warn_unused_result是 Swift 中的默认设置,这意味着您不应该编写忽略返回值的代码。