我们在Objective-C代码中的所有becomeFirstResponder
函数调用上开始发出此警告。
忽略使用“warn_unused_result”属性声明的函数的返回值
[self.phoneNumberField becomeFirstResponder]; // warning here!!!
在这里抑制此警告的最佳方法是什么?
编辑:我也试过了,
BOOL ignore = [self.emailField becomeFirstResponder];
但有了这个,Xcode警告变量ignore
未被使用:(
我也尝试了这个,
BOOL ignore = [self.phoneNumberField becomeFirstResponder];
if (ignore) {
}
在这种情况下,警告消失了。但我认为我甚至无法通过自己的代码审查。太难看了!
答案 0 :(得分:32)
它应该可以将表达式转换为void表达式。
(void)[self.emailField becomeFirstResponder];
(即使我无法重现警告。但是,这可能取决于警告标志。)
进行编辑:
BOOL ignore = [self.emailField becomeFirstResponder];
可能的
BOOL ignore = [self.emailField becomeFirstResponder];
ignore = ignore;
// or
(void)ignore;
应删除警告。 (这与我的旗帜有关。)然而,这也是一个丑陋的黑客。
BTW:该属性有一个原因。也许你应该重新检查一下是否是一个好主意,而不是测试返回值。答案 1 :(得分:3)
如果您具有从Objective-C代码调用的Swift函数,则可能会收到此警告。您可以通过在Swift中的函数之前添加@discardableResult
来使其静音,如下所示:
@objc @discardableResult func yourFanzyFuncInSwift(argument: String) -> Bool { ... }
类似于 warn_unused_result 是Swift中的默认设置,这意味着您不应编写忽略返回值的代码。