Swift的struct 理解

swift语言有两种基本的数据类型,即类class和结构体struct
swift Foundation框架的SDK,诸如StringArrayDictionary都是基于struct实现的。

structclass相比,有什么区别呢?
主要的区别就在于class类型引用,而struct值引用
struct没有继承的功能,class有继承功能。

Objective-C中常用的NSArray,NSDictionary, NSString, UIKit等都是类型引用;而NSInteger,CGFloat, CGRect等则是值引用

类型引用(class reference),将变量a赋值给变量b,即b = a,这样的赋值语句仅仅将b的指针与a的指针一样,指向同一块内存区域,此时改变b的值,a也会跟着改变。
值引用(value reference),赋值语句b = a处理的过程是开辟一个新的内存b,将a变量的内容拷贝后存放到内存b,这时a和b完全没有关系的两个变量,对b的改变不会影响到a。

struct没有继承的功能,这是因为swift在本质上来说是面向协议(Protocol Oriented)的语言,struct没有也不需要继承的功能,为了实现某个功能,struct去服从并实现某个协议就即可,从一个较高的层次来看,struct+protocol是构成swift面向协议语言的两个基石。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容