如何在快速关闭中正确引用自我?
dispatch_async(dispatch_get_main_queue()) { self.popViewControllerAnimated(true) }
我收到错误:
无法将表达式的类型’Void’转换为’UIViewController’类型.
随机我试过:
dispatch_async(dispatch_get_main_queue()) { () self.popViewControllerAnimated(true) }
它工作.不确定extra()的作用!有人在乎解释吗?谢谢!
解决方法
这与人们遇到这些问题的问题相同:
What am I doing wrong in Swift for calling this Objective-C block/API call?
animateWithDuration:animations:completion: in Swift
这是一般的想法:
闭包的优化之一是:
Implicit returns from single-expression closures
因此,如果闭包中只有一行,则闭包的返回值会发生变化.在这种情况下,popViewController返回正在弹出的视图控制器.通过向闭包添加(),您只需将其设为2行闭包,并且返回值不再隐含!