美文网首页
swift的struct和class

swift的struct和class

作者: 爆裂少女小鸭子 | 来源:发表于2016-10-30 17:43 被阅读0次

类和结构体对比

Swift 中类和结构体有很多共同点。共同处在于:

定义属性用于存储值

定义方法用于提供功能

定义下标操作使得可以通过下标语法来访问实例所包含的值

定义构造器用于生成初始化值

通过扩展以增加默认实现的功能

实现协议以提供某种标准功能

与结构体相比,类还有如下的附加功能:

继承允许一个类继承另一个类的特征

类型转换允许在运行时检查和解释一个类实例的类型

析构器允许一个类实例释放任何其所被分配的资源

引用计数允许对一个类的多次引用

类和结构体的选择

在你的代码中,你可以使用类和结构体来定义你的自定义数据类型。

然而,结构体实例总是通过值传递,类实例总是通过引用传递。这意味两者适用不同的任务。当你在考虑一个工程项目的数据结构和功能的时候,你需要决定每个数据结构是定义成类还是结构体。

按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:

该数据结构的主要目的是用来封装少量相关简单数据值。

有理由预计该数据结构的实例在被赋值或传递时,封装的数据将会被拷贝而不是被引用。

该数据结构中储存的值类型属性,也应该被拷贝,而不是被引用。

该数据结构不需要去继承另一个既有类型的属性或者行为。

举例来说,以下情境中适合使用结构体:

几何形状的大小,封装一个width属性和height属性,两者均为Double类型。

一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。

三维坐标系内一点,封装x,y和z属性,三者均为Double类型。

在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。

相关文章

网友评论

      本文标题:swift的struct和class

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