第六章:函数(function)
6.3 函数作为代理 function as delegate.
foundation框架的代理
知识点1:本小节只有一个知识点 swfit中的代理用weak 来修饰 防止循环引用。
weak var delegate: xxxDelegate?
结构体代理
知识点2:我们可以将代理方法用mutating关键字来修饰,来修改结构体本身的内容
书中举了个例子:将结构体设置成代理。 发现原结构体的内部并不能改变。
原因:delegate = structXX 时,实质是把结构体的复制赋值给了delegate。所以结构体内部不能发生改变
总结: 在代理和协议的模式中,并不适合使用结构体。
使用函数,而非代理(其实就是使用闭包,不用代理)
这个小节主要就是讲对于结构体,尽量不要用delegate,用闭包就行。 通过[weak self]的方式避免循环引用。