Analyze 静态分析工具中显示 大量的CF类型指针 内存leak 问题
今天使用Analyze 看了下项目,
解决办法,项目中使用了ARC,OC的指针类型我们完全不考虑release的问题,但是使用CF 的地方就不同,CF类型的指针我们是采用__bridge** 处理的,但是处理的时间还是出现了内存泄漏,
CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
使用了必须采用CFRelease(results);进行释放,ARC帮你不会做这个工作的。
NSString * personPhone = (__bridge NSString*)personPhoneC;
类似于 weak ,需要释放的,调用CFRelease
NSString * personPhoneLabel = (__bridge_transfer NSString *)personPhoneLabelCF;
_bridge_transfer已经引入了新指针的所有权,并且已经对旧指针的所有权进行了释放,无需要在CFRelease;
总之,你还是黄金法则,你用了啥就管理啥,是OC的东西,开了ARC ,系统帮你管理,CF 的东西,开了ARC也是不能帮你做内存管理的,你用了啥就自己去管理。
最后: 生活就是碎片,有了漏洞就去补呀,碎片多了,早晚会死掉的...