ARC 下引用计数的打印
2016-09-03 11:21
309 查看
在管理内存的时候经常需要打印对象的引用计数,来检测对象是否发生内存泄漏,但是在ARC下是禁止查看Objective-C对象的引用计数的,所以导致在ARC下无法打印对象的引用计数;
但是Objective-C 对象可以转化为CoreFoundation对象,所以可以使用如下代码在ARC下打印对象的引用计数;
运行结果:
这里需要注意的是,要用__bridge来转换,如果用__bridge_retained 来转换的话,实际上生成了一个CoreFoundation 对象,并且retain了一次原来的Objective-C对象,使得引用计数比真实值大一;
使用__bridge_retained的输出结果:
但是Objective-C 对象可以转化为CoreFoundation对象,所以可以使用如下代码在ARC下打印对象的引用计数;
id Obj =[[NSObject alloc ]init]; NSlog(@"retain count = %ld\n",CFGetRetainCount((__bridge CFTypeRef)(obj)));
运行结果:
这里需要注意的是,要用__bridge来转换,如果用__bridge_retained 来转换的话,实际上生成了一个CoreFoundation 对象,并且retain了一次原来的Objective-C对象,使得引用计数比真实值大一;
使用__bridge_retained的输出结果:
相关文章推荐
- 在 arc里面打印 引用计数的方法
- ARC 环境下打印对象的 retainCount 引用计数
- ARC自动引用计数和分类
- nonatomic对引用计数的影响(非ARC)
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- 自动引用计数(ARC Automatic Reference Counting)
- iOS开发之ARC(自动引用计数)
- Automatic Reference Counting (ARC) 自动引用计数
- 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS开发之ARC(自动引用计数)
- obj-c编程11:内存管理和ARC(自动引用计数)
- [Objective-C] 从“引用计数”过渡到“自动引用计数”(ARC)
- obj-c编程11:内存管理和ARC(自动引用计数)
- 移动开发:iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- ARC专题:编写兼容ARC(自动引用计数) 和 non-ARC(非自动引用计数)的通用代码
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)
- obj-c编程11:内存管理和ARC(自动引用计数)