1.class 和 struct 的区别
a.class 为类, struct 为结构体, 类是引用类型, 结构体为值类型, 结构体不可以继承
值类型的变量直接包含他们的数据,对于值类型都有他们自己的数据副本,因此对一个变量操作不可能影响另一个变量;
引用类型的变量存储对他们的数据引用,因此后者称为对象,因此对一个变量操作可能影响另一个变量所引用的对象。
b.属性初始化不同,
class直接赋值,可选类型,构造器赋值
struct 不需要提前赋值,
c.在struct的成员函数中修改自己本身的值,应该在函数签名上加上mutating关键字,而class则没有此限制
d.struct初始化为let的对象无法修改,修改会编译报错,而class没有此限制
e.从内存分配角度, struct分配在栈上,而class分配在堆上。
e.从安全角度,struct值类型是自动线程安全的,无引用计数
f.从速度角度,值类型通常来说是以栈的形式分配的,而不是用堆。
g.从内存泄漏的角度看,struct没有引用计数,不会引起内存泄漏
2.map、filter、reduce 的作用
![](https://img.haomeiwen.com/i2518658/4d69a8f03fee1b0d.png)
![](https://img.haomeiwen.com/i2518658/87298d7961a0ef02.png)
3.map 与 flatmap 的区别
![](https://img.haomeiwen.com/i2518658/5c3667c63e86788d.png)
![](https://img.haomeiwen.com/i2518658/70485c162b712b97.png)
![](https://img.haomeiwen.com/i2518658/9f18fb9ed161f52e.png)
4.Swift 如何优雅的实现协议的可选方法
![](https://img.haomeiwen.com/i2518658/87bab1203a7429c9.png)
![](https://img.haomeiwen.com/i2518658/e9283cee73c401d0.png)
![](https://img.haomeiwen.com/i2518658/8ecbee59e9c83318.png)
![](https://img.haomeiwen.com/i2518658/c218166a31790595.png)
![](https://img.haomeiwen.com/i2518658/8f5901d8c884b431.png)
![](https://img.haomeiwen.com/i2518658/afd55f78ad15c80e.png)
网友评论