Некоторые веб-сайты рекомендуют инициализировать представления с помощью отложенной инициализации вместо раскадровки.
Работает, когда self
не используется при отложенной инициализации.Но когда в нем используется self
, возникает ошибка компиляции.
Например, в следующем коде label1
может быть успешно скомпилировано, но label2
не может, потому что self
используется в нем.
Как использовать self
в ленивой инициализации?
class A {
private let label1: UILabel = {
return UILabel()
}()
private let label2: UILabel = {
let view = UILabel()
self.addTextToLabel(view) // compile error !!!
return view
}()
private func addTextToLabel(label: UILabel) {
label.text = "test"
}
}