ios-block-对象与对象之间的解偶合
2014-04-15 19:43
218 查看
对象与对象之间通信的3种方式 1.通知1对多 2.代理 3.block
//blcok中要引用局部变量的时候会作为一个常量编码到block中,因为block不是马上执行的,然而局部变量出来大括号就释放掉了,当然是可以用,不可以修改的 intnumber=20; [selftest:^int(inta,intb){ number=30; returna+b; }]; 这种是错误的, 当然也可以用__block修饰 __blockintnumber=20; [selftest:^int(inta,intb){ number=30; returna+b; }]; 就可以修改了,经过多方测试,只是因为有了__block修饰过后这个局部变量出了大括号不会马上消失,//这个不会作为一个变量编码到block中
当在block里面操作对象的时候,引用计数会加1,因为block会将这个的指针copy一份,和java类似管理对象,一个引用就相当于一个引用计数,自然会加一,当有__block修饰的时候不会被编码到block中,是直接通过现有的指针进行操作。只是作用域(作用域会变成,原有作用域和block作用域中大得那个)不会出括号就消失罢了。 //是通过测试了得,简单一句就是,是否有被编码到block中(判断是否有被编码进去,前提是block中是否用到,再看是否有__block修饰),编码进去了就是复制了一份(简单数据类型就完全脱离的2份,对象就是多了一个引用,相当于retain),没有编码进去(只是会改变作用域),操作的还是原来的那个值或者对象。
//类似于,强引用和若引用,没有block的就是强引用,有block修饰的就是弱引用,又不完全是强弱引用的关系,弱引用是没法将作用域变化的,(对象的作用域无非还是引用计数的问题,说到底还是再该释放的时候没释放罢了)
相关文章推荐
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- NSMutableAttributedString的使用
- ios开发常用技巧
- iOS开发中plist文件的创建与简单读取(一)
- iOS学习之(一)按钮使用大全
- IOS 从系统图库中获取 图片 并设置为头像
- Window8 进不了PE如何设置BIOS
- IOS多线程及队列的使用
- ioS代理中的一些小问题
- IOS URL 转义方法
- IOS7 新特性
- IOS之数据持久化
- iOS开发单例模式 dispatch_once
- 学习iOS开发之使用ZBar扫描二维码中文乱码问题
- 检查内存有无泄露
- iOS消息推送实现过程记录
- ios--OpenCV--基于模板图片的标记识别
- iOS非常好用的第三方开源项目
- IOS收缩式导航条的实现
- Xcode 创建 支持IOS4.3以上版本的应用的方法