在Objective-C中,类其实就是一个结构体,基类NSObject可以强转为Struct,在这个Struct中,第一个成员即是isa,OC整个运行时通过这个isa指针来支撑。
Swift中,类和结构体做到了很好的结合和互补。
首先类和结构体的共性:
- 定义属性用于存储值
- 定义方法用于提供功能
- 定义下标操作使得可以通过下标语法来访问实例所包含的值
- 定义构造器用于生成初始化值
- 通过扩展以增加默认实现的功能
- 实现协议以提供某种标准功能
类比结构体多的功能:
- 继承允许一个类继承另一个类的特征
- 类型转换允许在运行时检查和解释一个类实例的类型
- 析构器允许一个类实例释放任何其所被分配的资源
- 引用计数允许对一个类的多次引用
可见,一个很重要的特点是,引用计数的不同。结构体是值类型,每次的赋值都会发生值拷贝,而类遵循ARC的引用计数原理,可能会多个变量或者常量指向同一个类。
OC中NSArray、NSString等都是类实现的,Swift中大部分值类型底层都是Struct实现的,和OC有所不同,至于如何实现的,待下回研究。