什么是代理和通知,写一下他们基本的实现方式
-
代理:“一对一”,对同一个协议,一个对象只能设置一个代理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