swift中结构体与类有着密切的关系。
通常他们都能:
1.定义属性用于存储值,定义方法提供功能
2.定义构造器生成初始值,通过扩展实现默认功能等。
类还具有以下功能:
1.继承
2.引用计数允许对一个类多次引用。
3.结构器允许对一个类的实例释放任何其所分配的资源。
结构体与类的根本区别在于:
结构体总是通过复制的方式在代码中传递的,结构体是值类型,类是引用类型。
在swift中:基础数据类型本质上都是结构体。
结构体
如上图:String 类型本质上是一个结构体,带有一个初始化方法。
结构体的定义
注意swift结构体的用法与类是极其相似的,在定义,初始化,实例,调用几乎是一模一样的。除了结构体不具有继承的相关属性方法,他们在用法上完全可以等同。
例如:
用法
注意:swift中结构体在实例化为对象时,结构体的所有成员必须完成初始化,这和类是一样的。
集合类型的拷贝行为(数组字典)
Swift 中数组(Array)和字典(Dictionary)类型均以结构体的形式实现。然而在最新的swift语法(2.0)中当数组被赋予一个常量或变量,或被传递给一个函数或方法时,其拷贝行为与字典和其它结构体没有任何不同。
以下对数组和结构体的行为描述与对NSArray和NSDictionary的行为描述在本质上不同,后者是以类的形式实现,前者是以结构体的形式实现。NSArray和NSDictionary实例总是以对已有实例引用,而不是拷贝的方式被赋值和传递。
数组的拷贝行为