iOS 通知、代理、block的区别

通知:

一对多,比如在开发中,很多控制器都想知道一个事件,所以用通知
通知的使用,这篇文章比较好
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的区别)