iOS Block 和 Delegate 的使用比较
2016-07-11 11:12
351 查看
1.共同的作用:
Block 和 Delegate中的方法都可以理解成回调函数,当某件事情发生的时候取执行一段代码片段2.Block(代码块)
优点:是一种轻量级的回调,能够直接访问上下文,使用块的地方和块的实现地方在同一个地方,使得代码组织更加连贯3.Delegate(代理)
相对来说是重量级的回调,缺点:
因方法的声明和实现分离开来,代码的连贯性不是很好
代理很多时候需要存储一些临时数据
优点:
代理的回调函数可以是一组多个函数,在不同的时机调用不同的回调函数
4.如何选择使用哪一种
1.当回调函数多于3个的时候,采用代理比较好2.使用代码块容易造成循环引用,代理不会出现该问题
3.其他情况下优先考虑代码块
Block分为三种:
临时性的,只用在栈当中,不会存储起来。
比如数组的 foreach 遍历,这个遍历用到的 block 是临时的,不会存储起来。
需要存储起来,但只会调用一次,或者有一个完成时期。
比如一个 UIView 的动画,动画完成之后,需要使用 block 通知外面,一旦调用 block 之后,这个 block 就可以删掉。
需要存储起来,可能会调用多次。
比如按钮的点击事件,假如采用 block 实现,这种 block 就需要长期存储,并且会调用多次。调用之后,block 也不可以删除,可能还有下一次按钮的点击
相关文章推荐
- 在导航栏上添加搜索框的问题
- iOS: xcode打包上传iTunes失败,iTunes Store operation failed,this action can not complete .try again
- ios-IM
- iOS CoreTelephony 实现监听通话状态
- AFNetworking 源码解析之“AFURLSessionManager”
- iOS XMPP协议的服务端Tigase
- IOS 开发大牛首选之路
- iOS--检测野指针
- iOS设计模式(九) 模板方法模式
- iOS中 如何将自己的框架更新到cocopods上
- iOS AFNetWorking源码详解(一)
- ios截屏 裁剪区域
- iOS新的视频开发框架AVPlayerViewContoller与画中画技术
- IOS人脸识别和二维码识别
- iOS 开发 Pch 文件的正确使用
- 用于判断ios屏幕的宏
- iOS开发之静态库的生成、静态库的合并、静态库使用
- 断言NSAssert()-调试程序中的Bug
- iOS 关于引导页的工具类的封装 一句代码搞定引导页
- IOS使用SMSSDK实现短信验证