gpt4 book ai didi

ios - Xcode 6 模板中的 UIWindow

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

我有一个简单的问题,为什么 Xcode 中所有 Apple 模板上的 main(也是唯一的 UIWindow)声明为 var,而不是 let。

var window: UIWindow?

据我了解,我们应该尽可能使用 let,尤其是在实例不会更改的情况下。

对对象使用 let 仍然允许您修改它们的属性(框架等)。

我在理解何时将 let 与对象(类类型)一起使用时遇到了一些困难。

我假设 CLLocationManagerUIWindow 是何时将 let 用于对象的完美示例,但 Apple 似乎没有在他们的代码中使用 let。

最佳答案

使用 let 关键字定义的属性在对象初始化时必须有一个值。该窗口不是在初始化期间创建的,因此不能是 let。

对于 View Controller 来说,情况是一样的——没有一个导出,或者实际上是 View 属性,都不能被 let,因为它们在初始化时不存在,但稍后在需要 View 时创建。

let 属性对于 UIKit 和 View Controller 来说并不是很好 - 按照设计, View Controller 不会在初始化时做很多工作,你只能在那个时候设置 let .您完全正确,因为 let 属性对于位置管理器或托管对象上下文之类的东西非常有用,但事实证明 lazy var 通常是更好的选择。

在我(有限的,像每个人一样!)Swift 体验中,let 属性非常适合制作不可变模型类,本地 let 是在-代码。

您可以使用 let 属性并在那里定义它们,因此对于位置管理器:

let locationManager = CLLocationManager()

更多地考虑您需要哪些信息来创建进入该属性的任何内容。如果可以在没有任何上下文的情况下从头开始制作,请按照上面的示例进行操作。如果它需要传递一个委托(delegate)或任何其他属性,您可能会在初始化后创建或设置它,所以 let 是不合适的。

关于ios - Xcode 6 模板中的 UIWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069199/

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