[英]Swift lazy initialization can't conform to the protocol
我在协议中声明了几个UI组件。
protocol SomeViewContainer {
var aView: ACustomizedView
...
}
class TestViewController: SomeViewContainer {
var aView: ACustomizedView!
}
上面的代码不会通过,因为编译器认为TestViewController
符合该协议。
从远程获取数据后,将初始化aView
,因此我不能仅删除!
。
另外,对于协议中声明的其他一些属性,我更喜欢像下面这样的惰性初始化。
lazy var aView: UIView! = {
}()
仍然无法编译。 是否有关于如何使协议具有延迟初始化的想法?
有两个问题,一个是ACustomizedView!
类型的ACustomizedView!
与ACustomizedView
的属性不同,这就是为什么它不符合
其次,您应该能够使用惰性。 那是您的实际代码吗?
延迟初始化使用自执行闭包,因此它将在调用时自动运行闭包代码,并向属性提供闭包返回的内容
事实上,在封盖内什么也没有,将导致封盖破裂。
您实际上需要从闭包内部返回视图
lazy var aView: UIView = {
let view = UIView()
// configure view
return view
}()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.