参考链接:http://blog.csdn.net/qq_19327355/article/details/46406785
一、delegate的特点:
优点:
1.减少代码的耦合性,使事件监听和事件处理相分离。
2.清晰的语法定义,减少维护成本,较强的代码可读性。
3.不需要创建第三方来监听事件和传输数据。
4.一个控制器可以实现多个代理,满足自定义开发需求,可选必选有较大的灵活性。
缺点:
1.实现委托的代码过程比较繁琐.
2.当实现跨层传值监听的时候将加大代码的耦合性,并且程序的层次结构将变的混乱。
3.当对多个对象同时传值响应的时候,委托的易用性将大大降低。
二、block的特点:
1,写法更简练,不需要写protocol、函数等等.
2,block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息.
3,block需要注意防止循环引用:
ARC下这样防止:
__weak typeof(self) weakSelf = self;
[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
[weakSelf doSomething];
}];
非ARC这样防止:
__block typeof(self) weakSelf = self;
[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
[weakSelf doSomething];
}];