MRC可以直接获取对象的引用计数,像这样

NSLog(@"%lu",obj.retainCount);

ARC下引用计数由编译器自动管理,不能够直接获取,所以上面的方式不能用了。可以用下面的几种方法:

//1、利用KVC获取 
[obj valueForKey:@"retainCount"]; 

//2、使用私有API
OBJC_EXTERN int _objc_rootRetainCount(id);  
_objc_rootRetainCount(obj) 

//3、转化为Core Foundation对象,获取引用计数
CFGetRetainCount((__bridge CFTypeRef)(obj));

需要注意的是上述方法只能用在dubug调试时,而且在多线程下获取的引用计数值都是不准确的。



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐