美文网首页
swift中结构体(struct)与类(class)的区别

swift中结构体(struct)与类(class)的区别

作者: iOS_tree | 来源:发表于2023-12-31 15:42 被阅读0次

一、区别
1、结构体保存在栈区,类对象保存在堆区,类对象指针一般在栈区,指向堆区的对象。
2、拷贝赋值时,结构体是值拷贝,对象赋值时指针拷贝。
3、结构体无析构函数,类有析构函数,在释放时可以调用相应的方法。
4、结构体构造函数会自动生成带参数的构造器。类不会对自动生成带参数的构造器。
5、结构体没有继承特性,类有继承特性。
6、结构体方法只能使用static修饰,类可以使用static修饰,也可以使用class修饰。
7、结构体的成员变量不需要初始化,编译器会自动初始化赋值,而类的成员变量必须被初始化。
8、结构体不存在单例,类可以存在单例。
9、结构体不能序列化为NSData,而类可以序列化为NSData。
10、混合开发中,OC不能调用swift的struct对象,可以调用swift中的类对象。
11、方法派发
结构体为静态派发,编译器将函数地址直接编码在汇编中,调用的时候根据地址直接跳转到实现,编译器可以进行内联等优化,
类为动态派发,运行时查找函数表,找到后再跳转到实现。
12、结构体在func里面需要修改property的时候需要加上mutating关键字,而class就不用。
二、如何选择
1、需要存储的内容占用内存较小的时候,优先考虑使用结构体
2、大内存数据优先考虑使用类
3、不需要进行继承使用且结构体满足要求时优先使用结构体
4、简单的数据存储且满足要求时使用结构体。
5、满足要求时,优先使用结构体,可以减少app的启动时间。
6、需要进行值拷贝而不是指针拷贝时优先使用结构体。

相关文章

网友评论

      本文标题:swift中结构体(struct)与类(class)的区别

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