在Obj-C中,常见的做法是使用便捷函数来执行常见操作,例如为视图配置自动布局:
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint
{
// Make some constraint
// ...
// Return the created constraint
return NSLayoutConstraint()
}
Run Code Online (Sandbox Code Playgroud)
如果你只需要设置约束并忘记它,你可以调用:
[view1 makeConstraint: view2]
如果您想稍后存储约束以便可以删除/修改它,您可以执行以下操作:
NSLayoutConstraint * c;
c = [view1 makeConstraint: view2]
Run Code Online (Sandbox Code Playgroud)
我想在swift中执行此操作,但如果我调用上面的函数并且不捕获返回的约束,我会收到警告:
Result of call to 'makeConstraint(withAnotherView:)' is unused
Run Code Online (Sandbox Code Playgroud)
很烦人.有没有办法让Swift知道我并不总是想要捕获返回值?
注意:我知道这一点.这很难看,而不是我想要的:
_ = view1.makeConstraint(withAnotherView: view2)
Run Code Online (Sandbox Code Playgroud)
Ham*_*ish 26
这是在Swift 3中引入的行为@warn_unused_result.为了告诉编译器调用者应该使用结果,而不是必须显式地注释函数,现在这是默认行为.
您可以@discardableResult在函数上使用该属性,以通知编译器返回值不必由调用者"消耗".
@discardableResult
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint {
... // do things that have side effects
return NSLayoutConstraint()
}
Run Code Online (Sandbox Code Playgroud)
view1.makeConstraint(view2) // No warning
let constraint = view1.makeConstraint(view2) // Works as expected
Run Code Online (Sandbox Code Playgroud)
您可以在进化建议中更详细地了解此更改.
| 归档时间: |
|
| 查看次数: |
7160 次 |
| 最近记录: |