在Xcode8.0 / Swift3.0 下出现⚠️警告,一直是这么使用的,没有出错,这个错误让人摸不着头脑,
最终还是找到了解决办法:
_ = navigationController?.popViewController(animated: true)
解释:
popViewController(animated:)
returns UIViewController?,
这样的话,编译器警告,因为你不是捕捉价值。解决方案是将其分配给一个下划线(或者理解为强调没有返回值)
Swift3.0 的变化
在Swift3.0 之前,所有方法默认情况下有一个“可废弃的结果”。当你没有捕获方法返回的时候没有警告会出现。
为了告诉编译器应该捕获结果,您必须在方法声明之前添加@warn_unused_result。它将被用于方法有一个可变的形式(例如、sort和sortInPlace)。可以添加@warn_unused_result(mutable_variant =“mutableMethodHere”)来告诉编译器。
然而,随着Swift 3.0 的飞速发展,现在所有方法返回值没有捕获到结果,都会出现警告说。
如果你想告诉编译器这里的警告是没有必要的,你可以在相对应的函数之前添加@discardableResult方法声明。如果你不想使用返回值,您必须显式地告诉编译器通过分配到下划线(或者是强调):
_ = someMethodThatReturnsSomething()
为什么需要这样添加到Swift3.0中呢,
- 预防可能的错误(例如 使用排序的方式思考修改集合体)
- 明确的意图不捕获相应的结果 或 需要捕获结果为其他类型的数据
所以在UIKit API里面, 在使用popViewController(animated:) 的时候没有返回值不添加@discardableResult完全正常(这并不是普遍的现象)
最后
原文地址:查找出处:stackoverflow
了解更多:
原文链接:http://www.jianshu.com/p/2fe13d368959
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。