ARC 下引用计数的打印

来源:互联网 发布:知乎每周精选232期 编辑:程序博客网 时间:2024/06/13 14:10

      在管理内存的时候经常需要打印对象的引用计数,来检测对象是否发生内存泄漏,但是在ARC下是禁止查看Objective-C对象的引用计数的,所以导致在ARC下无法打印对象的引用计数;

    但是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的输出结果:



 

0 0