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)
应该删除警告.(这与我的旗帜有关.)然而,这也是一个丑陋的黑客.
顺便说一句:这个属性有一个原因.也许你应该重新检查,是否是一个好主意,而不是测试返回值.
如果您有一个从 Objective-C 代码调用的 Swift 函数,您可能会收到此警告。您可以通过@discardableResult在 Swift 中的函数之前添加来使其静音,如下所示:
@objc @discardableResult func yourFanzyFuncInSwift(argument: String) -> Bool { ... }
Run Code Online (Sandbox Code Playgroud)
似乎warn_unused_result是 Swift 中的默认设置,这意味着您不应该编写忽略返回值的代码。