为什么let导致此错误,而var不会呢? UIViewController类没有初始化程序

时间:2018-08-05 21:22:15

标签: ios swift swift4

好的,所以我找到了这个评论:

How to resolve this error? - Class 'ViewController' has no initializers

但是没有人回答这个问题。为什么这行会导致错误:

let nameOfDelegate : protocolName!

但这不是:

var nameOfDelegate : protocolName!

我知道var是一个可变属性,let是一个常量,但是都正在初始化,对吗?

3 个答案:

答案 0 :(得分:3)

在Swift中,如果不为变量提供初始值,则默认将其设置为nil。 Swift不提供常量默认值。

答案 1 :(得分:2)

没有init()函数,因此在实例化类时不会初始化这些类成员。但是当实例化该类时,只能初始化一个:一个不变的,因为以后将无法初始化它。因此,请在init()函数中或直接在定义该常量的行上添加一个初始化器。

答案 2 :(得分:0)

它是因为它没有初始化,因为您以后需要给它一个值,所以您将无法使用它,因为它是一个“ let”,因此必须将其设为var,以便以后可以对其进行初始化

但是您可以使用已经从其他地方初始化的值-例如:let appDelegate = UIApplication.shared.delegate