代理学习:http://www.cocoachina.com/ios/20160317/15696.html
代理实现流程
在iOS中代理的本质就是代理对象内存的传递和操作,我们在委托类设置代理对象后,实际上只是用一个id类型的指针将代理对象进行了一个弱引用。委托方让代理方执行操作,实际上是在委托类中向这个id类型指针指向的对象发送消息,而这个id类型指针指向的对象,就是代理对象。
不同情况下代理和block的选择
多个消息传递,应该使用delegate。在有多个消息传递时,用delegate实现更合适,看起来也更清晰。block就不太好了,这个时候block反而不便于维护,而且看起来非常臃肿,很别扭。例如UIKit的UITableView中有很多代理如果都换成block实现,我们脑海里想一下这个场景,这里就不用代码写例子了.....那简直看起来不能忍受。
一个委托对象的代理属性只能有一个代理对象,如果想要委托对象调用多个代理对象的回调应该用block。
block 学习:http://blog.devtang.com/2013/07/28/a-look-inside-blocks/