美文网首页
iOS 通知、代理、block的区别

iOS 通知、代理、block的区别

作者: 彦子凡 | 来源:发表于2017-03-10 17:14 被阅读495次

    通知:

    一对多,比如在开发中,很多控制器都想知道一个事件,所以用通知
    通知的使用,这篇文章比较好
    http://www.cocoachina.com/ios/20150120/10954.html

    代理:

    代理注重的是过程,是一对一的,对于一个协议就只能用一个代理,所以单例不能用代理。

    block:

    通常拿来OC中的block和swift中的闭包来比较.
    block注重的是过程
    block会开辟内存,消耗比较大,delegate则不会
    block防止循环引用,要用弱引用

    ARC下这样防止:

    __weak typeof(self) weakSelf = self;
      [yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
           [weakSelf doSomething];
        }];
    
    MRC
    __block typeof(self) weakSelf = self;
      [yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
           [weakSelf doSomething];
        }];
    

    相关文章

      网友评论

          本文标题:iOS 通知、代理、block的区别

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