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