1.结构体基本介绍?
- 在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占用很小的一部分
- 比如
Bool、Int、Double、String、Array、Dictionary等常见类型都是结构体
结构体 - 所有结构体都有一个编译器自动生成的初始化器(Initializer、初始化方法、构造器、构造方法)
- 在第⑥行抵用的,可以传入所有成员值,用以初始化所有成员(
存储属性,Stored Property)
2. 结构体的生成的初始化器最大特点(目的)是什么?
-
保证所有成员都有初始值
自动初始化器
3. 下面代码能编译通过吗?

示例
- 能编译通过,因为可选值都有个默认值
nil
4. 如果结构体中有自定义初始化器,会对自动生成构造器有什么影响?
- 一旦在定义结构体时自定义了初始化器,编译器就不会再帮它自动生成其他初始化器

不再生成自动构造器
5. 类的基本介绍,对比结构体?
- 类的定义和结构体类似,但编译器并没有为类自动生成可以传入成员值的初始化器

类
6. 类的初始器(如果所有成员定义时指定了初始值)?

类的初始化器
7. 结构体和类的本质区别?
-
结构体是值类型(枚举也是值类型),类是引用类型(指针类型)
本质区别
8. 什么是 Copy On Write 技术?
- 在 Swift 标准库中,为了提升性能,String、Array、Dictionary、Set 采取了
Copy On Write技术 - 仅当有
写操作时,才会真正执行拷贝操作 - 对于标准库值类型的赋值操作,Swift 能确保最佳性能,所有没有必要为了保证最佳性能来避免赋值
9. 引用类型在赋值或者当成参数传递时有什么特点?

引用类型


