代理:“一对一”,对同一个协议,一个对象只能设置一个代理delegate
六个步骤:1.声明一个协议,定义代理方法2.遵循协议3.设置一个代理对象4.调用代理方法5.给代理赋值6.实现代理方法
注意事项:1.单例对象不能用代理;2.代理执行协议方法时要使用respondsToSelector检查其代理是否符合3.协议(检查对象能否响应指定的消息),以避免代理在回调时因为没有实现方法而造成程序崩溃
使用场景:公共接口,方法较多也选择用delegate进行解耦 iOS最常用tableViewDelegate, textViewDelegate iOS有很多例子比如常用的网络库AFNetwork,ASIHTTP库, UlalertView 类。
通知:一对一 一对多 传值四个步骤:1.发送通知2.创建监听者3.接收通知4.移除监听者
使用场景:1一很多控制器都需要知道一个事件,应该用通知;2 一相隔多层的两个控制器之间跳转
注意事项:1.一旦接收消息的对象多了,就难以控制了,可能有你不希望的对象接收了消息并做了处理2.创建了观察者,在dealloc里面一定要移除;
Block:Block是i〇S4.0+和Mac OS X 10.6+引进的对C语言的扩展,用来实现匿名函数的特性。Blocks语法块代码以闭包得形式将各种内容进行传递,可以是代码,可以是数组 无所不能。闭包就是能够读取其它函数内部变量的函数。就是在一段请求连续代码中可以看 到调用参数(如发送请求)和响应结果。所以采用Block技术能够抽象出很多共用函数,提 高了代码的可读性,可维护性,封装性。
使用场景:—: 动画二:数据请求回调三:枚举回调四:多线程gcd
注意事项:Iblock需要注意防止循环引用参考网址:http://www.cnblogs.com/wenboliu/articles/5422033.html



