美文网首页
swift中的结构体和类

swift中的结构体和类

作者: 梁森的简书 | 来源:发表于2020-09-07 10:53 被阅读0次

    结构体和类的本质区别

    0.区别.jpg

    值类型的赋值是深拷贝。
    在swift标准库中为了提升性能,对于系统中的String、Array、Dictionary采取了Copy On Write技术,只有当被拷贝的数据发生变化时才进行深拷贝(联想OC中的copy)。
    如果初始化后需要改变成员变量的值,class不必声明成可变类型,而struct必须声明称可变类型。

    0.rip.jpg

    结构体

    0.结构体.jpg
    0.结构体初始化器.jpg
    必须保证所有的成员都有值。

    如果某个成员是可为nil的,且是var类型则初始化时不必赋值
    类和结构体的成员变量如果都是var类型且是可为空的则不必所有成员变量都初始化

    一旦自定义了结构体的初始化器,那么系统就不再为这个结构体生成其他的初始化器。


    0.结构体内存结构.jpg

    结构体会自定为我们生成带有成员变量的初始化器,而类不会,需要我们手动添加

    0.类.jpg 0.类的初始化器.jpg

    相关文章

      网友评论

          本文标题:swift中的结构体和类

          本文链接:https://www.haomeiwen.com/subject/hdffektx.html