gpt4 book ai didi

swift - 定义属性时无法在闭包中引用自身

转载 作者:可可西里 更新时间:2023-11-01 01:35:49 26 4
gpt4 key购买 nike

我在网上的某个地方看到了这个例子:

let newButton:UIButton = {
let button = UIButton()

return button
}()

当我添加:

button.addTarget(self, action: Selector("someAction"), forControlEvents: UIControlEvents.TouchUpInside)

我收到错误信息:

Cannot convert value of type 'NSObject -> () -> ViewController' to expected argument type 'AnyObject?'

只是想澄清为什么我不能在这里引用 self 以及我如何才能使这项工作成为可能。

最佳答案

您不能引用 self,因为常量在 self 初始化之前设置。

您可以通过将其声明为 lazy var 而不是 let 来解决该问题。通过声明它 lazy var,您是在告诉您希望 var 在第一次使用时被初始化:

lazy var newButton: UIButton = {
let button = UIButton()
button.addTarget(self, action: Selector("someAction"), forControlEvents: UIControlEvents.TouchUpInside)

return button
}()

附带说明一下,对于 Swift 2.2,您应该将选择器定义为 #selector(YourClass.someAction)

关于swift - 定义属性时无法在闭包中引用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37420307/

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