- 浏览: 233917 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (118)
- Ruby/ROR (4)
- Mac (28)
- 我的见闻触发你我的灵感 (1)
- 创业 (1)
- JOSSO (2)
- XML (2)
- OpenRemote (1)
- 娱乐 (2)
- 版权/License (1)
- Java/Spring (4)
- 调试 (1)
- 路由器 (2)
- 技术博客 (21)
- 虚拟机 (1)
- Javascript (6)
- SVN (2)
- HA(Home Automation) (0)
- Android (2)
- iPhone/iPod (23)
- iPad (22)
- iOS公共 (28)
- Windows7 (1)
- 服务器技术 (2)
- 其它 (1)
- Shell (1)
- 数据库 (1)
- 问题总结 (1)
最新评论
-
zjjzmw1:
...
转载:IOS开发之——objectForKey与valueForKey在NSDictionary中的差异 -
hldfxh:
解决了我的问题
JSON Lib, XML转JSON字符串不要namespace,以及处理特殊xml属性"type" -
herry68:
可以给我提供以下你的这个NSData+Base64.h类吗
图片转base64串及反转回图片 -
herry68:
我用这个方法把图片转换成nsstring成功了,但是从nsst ...
图片转base64串及反转回图片 -
hibluse:
handy.wang 写道hibluse 写道我已经设置了WA ...
基于FMDB-SQLite的App数据库性能优化
以下结论是结合参考资料和实验得来,不对地方请大家纠正:
注意不要用NSString做实验,NSString的retainCount一直为-1;
1)局部变量(无__block修饰):
只有当block被copy时,局部变量的retainCount加1,同时self的retainCount也加1;
如果block没有被copy那么局部变量的retainCount不变;Block_release时不会把局部和self的retainCount减1的(test1方法);
输出:
2012-11-26 12:02:55.822 BlockTest[1843:11303] ======无__block修饰的局部变量
2012-11-26 12:02:55.823 BlockTest[1843:11303] Initial _lo1 retain count is 1
2012-11-26 12:02:55.824 BlockTest[1843:11303] Initial self retain count is 3
2012-11-26 12:02:55.824 BlockTest[1843:11303] _lo1 retain count is 2
2012-11-26 12:02:55.825 BlockTest[1843:11303] self retain count is 4
2012-11-26 12:02:55.825 BlockTest[1843:11303] _lo1 retain count is 1
2012-11-26 12:02:55.826 BlockTest[1843:11303] self retain count is 3
2)局部变量(有__block修饰):局部变量的引用数不会受block的影响, self的retainCount受Block_copy影响加1(test2方法)
输出:
2012-11-26 12:02:55.826 BlockTest[1843:11303] ======有__block修饰的局部变量
2012-11-26 12:02:55.826 BlockTest[1843:11303] Initial _blo1 retain count is 1
2012-11-26 12:02:55.827 BlockTest[1843:11303] Initial self retain count is 3
2012-11-26 12:02:55.827 BlockTest[1843:11303] _blo1 retain count is 1
2012-11-26 12:02:55.828 BlockTest[1843:11303] self retain count is 4
2012-11-26 12:02:55.828 BlockTest[1843:11303] _blo1 retain count is 1
2012-11-26 12:02:55.828 BlockTest[1843:11303] self retain count is 3
3)成员变量(无__block修饰):成员变量的retainCount不受影响,self的retainCount受Block_copy影响加1(test3方法)
输出:
2012-11-26 12:02:55.829 BlockTest[1843:11303] ======无__block修饰的成员变量
2012-11-26 12:02:55.829 BlockTest[1843:11303] Initial _instanceV retain count is 1
2012-11-26 12:02:55.830 BlockTest[1843:11303] Initial self retain count is 3
2012-11-26 12:02:55.830 BlockTest[1843:11303] _instanceV retain count is 1
2012-11-26 12:02:55.831 BlockTest[1843:11303] self retain count is 4
2012-11-26 12:02:55.831 BlockTest[1843:11303] _instanceV retain count is 1
2012-11-26 12:02:55.831 BlockTest[1843:11303] self retain count is 3
4)成员变量(有__block修饰):结论同3)(test4方法)
输出:
2012-11-26 12:02:55.832 BlockTest[1843:11303] ======有__block修饰的成员变量
2012-11-26 12:02:55.832 BlockTest[1843:11303] Initial _instanceV2 retain count is 1
2012-11-26 12:02:55.833 BlockTest[1843:11303] Initial self retain count is 3
2012-11-26 12:02:55.833 BlockTest[1843:11303] _instanceV2 retain count is 1
2012-11-26 12:02:55.833 BlockTest[1843:11303] self retain count is 4
2012-11-26 12:02:55.847 BlockTest[1843:11303] _instanceV2 retain count is 1
2012-11-26 12:02:55.847 BlockTest[1843:11303] self retain count is 3
5)block中不引用任何外部变量:没有Block_copy这行代码self的retainCount是不会加1的
输出:
2012-11-26 12:07:51.966 BlockTest[1881:11303] ======block中不引用任何外部变量
2012-11-26 12:07:51.967 BlockTest[1881:11303] Initial self retain count is 3
2012-11-26 12:07:51.967 BlockTest[1881:11303] self retain count is 4
2012-11-26 12:07:51.967 BlockTest[1881:11303] self retain count is 4
2012-11-26 12:07:51.968 BlockTest[1881:11303] self retain count is 3
综上:
1)无__block修饰的局部变量只有在Block_copy时retainCount才会加1;
2)有__block修饰的局部变量和成员变量的retainCount不受Block_copy的影响;
3)Block_release不会把引用的外部变量和self的retainCount减1;
4)Block_copy会把self的retainCount加1,无论block内部有没有引用局部和成员变量;
所以Block_copy慎用!Block_release时不要忘了把局部变量和self也release一次;
- 复杂数据类型变量的引用计数与block以及__block修饰符的关系.pdf (297.2 KB)
- 下载次数: 12
- 测试代码.zip (34.4 KB)
- 下载次数: 14
发表评论
-
图片转base64串及反转回图片
2013-07-29 12:04 2211图片转base64串: UIImage *_ori ... -
iOS中异步函数的单元测试
2013-06-08 09:51 1473转载自:http://blog.csdn.net/diyag ... -
拆数算法(ObjectiveC递归实现)
2013-03-21 10:45 1860把一个大数拆成几个指定的小数相加,以下实现方式性能很差仅供参考 ... -
[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
2012-12-16 15:56 8541转载自:http://blog.csdn.net/kangka ... -
基于FMDB-SQLite的App数据库性能优化
2012-12-14 16:48 110831)如果数据库配置成为串行模式:sqlite3_con ... -
Run Loop
2012-08-24 11:12 1150来源:http://www.cnblogs.com/scorp ... -
转载:IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
2012-08-23 15:49 1262来源:http://blog.csdn.net/pjk1 ... -
深拷贝和浅拷贝
2012-08-23 15:44 906来源:http://blog.csdn.net/pjk1129 ... -
静态全局变量的内存问题
2012-08-23 15:43 1100来源:http://blog.csdn.net/pjk1 ... -
如何将iPhone模拟器的分辨率调整至1136x640?
2012-08-09 10:01 3096来源:http://www.weiphone ... -
AtoS查看iOS Crash log中的16进制代码日志
2012-08-02 17:21 3365注意:crash_log一定要和打包时的archive对应上; ... -
Objective-c 中 nil, Nil, NULL和NSNull的区别
2012-08-02 10:40 907来自:http://blog.csdn.net/yhawaii ... -
XCODE4.3.2与真机联调时,console里输出中文乱码
2012-07-19 13:34 1279修改项目的scheme的info,把debugger由LLDB ... -
NSAutoReleasePool使用中drain和release的区别
2012-05-30 14:50 1621虽然ARC引入之后NSAutoReleasePool的使 ... -
Network Link Conditioner in Lion
2012-05-21 14:46 1828Network Link Conditioner in ... -
PushMeBaby中的神秘错误代码OSStatus的实际含义
2012-05-03 09:31 75051)查看SecureTransport.h中 / ... -
NSDefaultRunLoopMode vs NSRunLoopCommonModes
2012-04-20 10:14 5281A run loop is a mechanism th ... -
NSParameterAssert
2012-04-20 09:38 2593NSParameterAssert Valida ... -
线程内sleep
2012-04-19 09:20 1001[NSThread sleepForTim ... -
转换Xcode里打印的unicode编码日志
2012-04-18 20:33 17421)打开Terminal 2)输入python 3)pri ...
相关推荐
第二章_变量常量与数据类型_课堂示例
JAVA中的关键字、标识符、注释 JAVA中的数据类型、变量、运算符、表达式 JAVA类中方法的调用
delphi BlockRead用法的源码,blockread 函数可以读一个或多个记录到变量中
易语言自定义数据类型变量保存源码,自定义数据类型变量保存,CLSave
14.java学习第十四章——super()关键字+实例变量(含引用数据类型做实例变量)和局部变量的个人总结+基本数据类型和引用数据类型的存放位置.pdf
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
block,局部变量,全部变量,static的静态变量关系
本Delphi示例用于说明动态数组的引用计数机制基于变量而非元素。输出结果是这样的: ______________________________________________________ aba aba aba aaa ______________________________...
20 结构化程序设计的基本数据类型包括_______、逻辑类型、字符类型、浮点类型 21 使用关键字________来定义字符变量 22 结构化程序设计的基本数据类型包括_______、逻辑类型、整数类型、浮点类型 23 Java中,浮点型...
对象计数,对图片中需要检测的对象,进行数量的统计
R包:funModeling:数据清理、重要性变量分析和模型性能___下载.zip
C#数据类型,变量的声明,定义使用(值类型,引用类型等)
二级一、填空题1、C语言中基本的数据类型有:__________、__...2、C语言中普通整型变量的类型说明符为__________,在内存中占__________字节,有符号普通整型的数据范围是__________。3、整数-35在机内的补码表示为____
02_数据_变量_内存.html
还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建自定义类型的机制,而所有值最终都将是上述 6 种数据类型之一。乍一看,好像只有 6种数据类型不足以表示所有...
Windows常见数据类型及变量_常量的命名规律
面板数据定义差分和滞后变量的stata操作的代码
这遍PPT档详细地介绍了C++语言所有的变量与数据类型。