gpt4 book ai didi

ios - 在 dispatch_async 中正确引用 self

转载 作者:IT王子 更新时间:2023-10-29 05:44:15 26 4
gpt4 key购买 nike

如何在 swift 闭包中正确引用 self?

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

总体思路如下:

来自 Swift 书:https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/Closures.html

闭包的优化之一是:

Implicit returns from single-expression closures

因此,如果闭包中只有一行,则闭包的返回值会发生变化。在这种情况下,popViewController 返回被弹出的 View Controller 。通过将 () 添加到闭包中,您只需将它变成一个 2 行闭包,并且返回值不再是隐式的!

关于ios - 在 dispatch_async 中正确引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com