为什么我们需要在Swift中的属性初始化之后调用super.init()?

时间:2016-05-23 05:11:22

标签: ios swift init

当我尝试在super.init()self.name之前致电self.rating时,Xcode会显示错误。

如果它们不是可选的,那么在调用super.init()之前,Class'属性是否需要初始化的规则? 还是有另一个编译原因?

文件说

  

安全检查1 指定的初始化程序必须确保在委派最新的超类初始化程序之前初始化其类引入的所有属性。

虽然我认为它不适用于可选属性。

var name: String var photo: UIImage? var rating: Int init?(name: String, photo: UIImage?, rating: Int) { self.name = name self.rating = rating super.init() // If self.name is declared in here, it will makes error. //self.name = name self.photo = photo // Optional values are exceptional. if name.isEmpty || rating < 0 { return nil } }

*已添加*

我知道这是规则。但其他答案并未解释为什么Swift应用此规则。

0 个答案:

没有答案