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];
    }];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容