我们应该如何在Structs和Classes中初始化存储的属性?

时间:2016-06-25 16:29:44

标签: swift class struct value-type

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不会给出任何编译时错误?

1 个答案:

答案 0 :(得分:1)

这是因为,在没有任何显式声明的初始化器的情况下,struct本身声明了隐式成员初始化器init(title:photographer:)

但是课程不这样做。

因此该类无法满足初始化合同(必须在实例本身完成初始化之前初始化所有实例属性),但结构不会使合同失败。