Nic*_* B. 6 iphone uiviewcontroller uiview ios swift
我注意到view属性UIViewController不是类型UIView?,UIView而是(即不是可选的).这是为什么?是不是UIViewController的视图应该是nil什么时候没有加载?
官方文档说明如下:
存储在此属性中的视图表示视图控制器的视图层次结构的根视图.此属性的默认值为nil.....在低内存条件下以及最终释放视图控制器本身时,UIViewController类可以自动将此属性设置为nil.
根据我对Swift选项的理解,似乎view应该声明,var view: UIView?因为它可能nil在某个时候.Apple似乎反过来说,你能解释一下我的原因吗?
你怎么看?
它看起来像是view一个惰性属性(但不使用修饰符lazy) - 事实上,如果您阅读内联注释(cmd+单击视图属性以打开源代码),它会说:
如果尚未设置视图,则 getter 首先调用 [self loadView]。如果子类重写 setter 或 getter,则必须调用 super。
以及关于loadView():
如果子类不使用笔尖,则应在此处创建自定义视图层次结构。永远不应该直接调用。
我认为:
所以它的实现在概念上应该类似于:
private var _view: UIView?
var view: UIView {
if _view == nil {
loadView()
}
return _view!
}
func loadView() {
if _view == nil {
// _view = something()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |