Apple的documentation州:
类和结构必须将其所有存储属性设置为 适当的初始值,当该类的实例或 结构已创建。存储的属性不能留在 不确定的状态。
我也看到了this个问题,但仍无法找到答案。
// struct
struct FlickrObj { // No Error ????
var title : String
var photographer : String
}
// class
class FlickrObj { // will create error: Class 'FlickrObj' has no initializers
var title : String
var photographer : String
}
Apple说类和结构必须设置它们的存储属性,但为什么Struct不会给出任何编译时错误?
答案 0 :(得分:1)
这是因为,在没有任何显式声明的初始化器的情况下,struct本身声明了隐式成员初始化器init(title:photographer:)
。
但是课程不这样做。
因此该类无法满足初始化合同(必须在实例本身完成初始化之前初始化所有实例属性),但结构不会使合同失败。