美文网首页
Swift中struct和class的区别

Swift中struct和class的区别

作者: CicadaJZ | 来源:发表于2022-07-13 14:54 被阅读0次

struct

值类型,深拷贝,分配在栈上
没有析构函数
不能继承
不会发生内存泄漏,线程安全

class

引用类型,浅拷贝,分配在堆上
有析构函数
可以继承
可以有单例
每一个成员变量都必须初始化

相同点

操作符函数、泛型、协议采纳、观察器

Tips

OC里面无法调用Swift里的struct,因为要在OC里调用Swift代码的话,对象需要继承自NSObject。
struct不能被序列化成NSData,不能归解档,class可以,因为归解档的类必须遵守NSCoding协议,而NSCoding只适用于继承自NSObject的类,struct不能遵守NSCoding协议。

解决方案:
定义一个protocol,包含两个方法:
1.从结构体中得到一个NSDictionary对象
2.使用一个NSDictionary对象实例化结构体
NSDictionary可以使用NSKeyedArchiver进行序列化
好处:
所有遵守该协议的结构体都可以被序列化

struct在方法里修改Property的时候,需要加上mutating,class不需要。
struct是静态派发

相关文章

  • iOS知识点总结(面试向)更新中

    Swift 1.Swift中struct和class的区别 Swift中struct和class有什么不一样的地方...

  • swift我们应该知道的

    1.class 和 struct 的区别? swift中,class是引用类型,struct是值类型。值类型在传递...

  • iOS面试题

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

  • 一些概念的理解

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

  • 答卓同学的iOS面试题

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

  • swift小问题

    1、struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值时...

  • iOS开发NSString的常用方法总结

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

  • Swift理论相关

    类(Class)和结构体(Struct)有什么区别 在swift中,class是引用类型.struct是值类型.值...

  • iOS面试题 - Swift语言

    1、类(class)和结构体(struct)有什么区别? 在Swift中,class是引用类型,struct是值类...

  • 面试题二

    Swift 1、Swift中struct和class有什么区别? struct是值引用,更轻量,存放于栈区,cla...

网友评论

      本文标题:Swift中struct和class的区别

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