gpt4 book ai didi

ios - 在 Swift 的属性声明期间引用 self

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:04 25 4
gpt4 key购买 nike

我正在尝试使用以下代码声明和初始化一个属性。

class ClassName: UIViewController {

  private let doneButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneButtonDidTapped")

func doneButtonDidTapped() {
println("Ulala!")
}
}

但是,我得到了以下错误。

Cannot find an initializer for type 'UIBarButtonItem' that accepts an argument list of type '(title: String, style: UIBarButtonItemStyle, target: ClassName -> () -> ClassName, action: String)'

有人知道这里发生了什么吗?我是否应该放弃使用声明内联初始化属性的尝试,而是在 init() 方法上进行初始化?

最佳答案

正如@giorashc 所说,由于 swift 的两阶段初始化,self 还没有初始化,所以你不能这样做。

但我认为您可以创建一个惰性初始化:

lazy private var doneButtonItem : UIBarButtonItem = {
[unowned self] in
return UIBarButtonItem(title: "Done", style:UIBarButtonItemStyle.Plain, target: self, action: "doneButtonDidTapped")
}()

关于ios - 在 Swift 的属性声明期间引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31021390/

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