Swift中的类(Class)和结构体(Struct)

在Objective-C中,类其实就是一个结构体,基类NSObject可以强转为Struct,在这个Struct中,第一个成员即是isa,OC整个运行时通过这个isa指针来支撑。

Swift中,类和结构体做到了很好的结合和互补。

首先类和结构体的共性:

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义下标操作使得可以通过下标语法来访问实例所包含的值
  • 定义构造器用于生成初始化值
  • 通过扩展以增加默认实现的功能
  • 实现协议以提供某种标准功能

类比结构体多的功能:

  • 继承允许一个类继承另一个类的特征
  • 类型转换允许在运行时检查和解释一个类实例的类型
  • 析构器允许一个类实例释放任何其所被分配的资源
  • 引用计数允许对一个类的多次引用

可见,一个很重要的特点是,引用计数的不同。结构体是值类型,每次的赋值都会发生值拷贝,而类遵循ARC的引用计数原理,可能会多个变量或者常量指向同一个类。

OC中NSArray、NSString等都是类实现的,Swift中大部分值类型底层都是Struct实现的,和OC有所不同,至于如何实现的,待下回研究。

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

推荐阅读更多精彩内容