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 的作用
3.map 与 flatmap 的区别
4.Swift 如何优雅的实现协议的可选方法