对象.delegate=self是啥意思
委托的意思就是将自己的任务交给其他人去做!
对象.delegate=self的意思就是对象的任务交给self去做 对象!=self
假如你有对象A 对象B
A是B的成员变量
class B {
member A
}
在B中写这么一句“A.delegate=self”
就是将对象A的任务交给self(这里是B)去完成(默认情况下是由A来完成还是???,通过在class B中重写class A 中的一些与对象相关的方法函数来实现。)
其实还有两方面的理解:
1.委托是继承的一种实现。比如A委托 给B , B实现了A中的方法。有点类似B继承了A。
2.委托方法能够读取被委托对象的属性和方法,这点可以部分解答了你问的“委托必要性”。
比如A委托 给B,在B中实现的委托方法就可以像A中的其他方法一样访问B中的属性。
委托是一种设计模式(译者注: 想起了那年 UITableViewDelegate 中的奔跑,那是我逝去的Objective-C。。。),它允许类
或结构体
将一些需要它们负责的功能交由(委托)
给其他的类型的实例。
委托模式的实现很简单: 定义协议
来封装
那些需要被委托的函数和方法
, 使其遵循者
拥有这些被委托的函数和方法
。
委托模式可以用来响应特定的动作或接收外部数据源提供的数据,而无需要知道外部数据源的所属类型(译者注:只要求外部数据源遵循
某协议)。
let tracker = DiceGameTracker()
let game = SnakesAndLadders()
game.delegate = tracker //委托给tracker对象处理
game.play()