【问题标题】:Why does let cause this error, but var does not? Class `UIViewController` has no initializers为什么 let 会导致这个错误,而 var 不会?类 `UIViewController` 没有初始化器
【发布时间】:2018-08-05 21:22:15
【问题描述】:

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

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

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

let nameOfDelegate : protocolName!

但是这个没有:

var nameOfDelegate : protocolName!

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

【问题讨论】:

    标签: ios swift swift4


    【解决方案1】:

    在 Swift 中,如果你不提供初始值,可选变量默认设置为 nil。 Swift 不给常量默认值。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 当然....这让我很清楚the one that is immutable, because it will not be possible to initialize it later.谢谢!
      • 另一个家伙是第一个,所以我不得不把它给他。不过谢谢!
      【解决方案3】:

      因为它没有被初始化,因为你以后需要给它一个值,你不能,因为它是一个“let”,所以你必须把它变成一个 var 以便你以后可以初始化它

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

      【讨论】:

      • 和upvote会很好我的朋友,如果你喜欢其他人的回答,请将其标记为已接受,帮助社区兄弟:D
      • 我的代表低于 15,所以我仍然无法投票:/ 你可以给我的帖子投票,以便我可以投票给其他人吗?你是第一个,所以我给了你代表。
      • 当然。谢谢我的朋友,下一次,不要只去第一个,去你认为最好的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多