美文网首页
使用block和使用delegate 的区别?

使用block和使用delegate 的区别?

作者: 90后的晨仔 | 来源:发表于2017-11-15 10:26 被阅读17次
    参考链接: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];
        }];
    

    相关文章

      网友评论

          本文标题:使用block和使用delegate 的区别?

          本文链接:https://www.haomeiwen.com/subject/pnccvxtx.html