iOS6上的CFAutoRelease()类行为

我有一个方法创build一个ABRecordRef,设置其属性并返回参考。

我在使用CFAutoRelease时遇到崩溃,因为我需要支持iOS <7。 我将如何正确地释放这个?

-(ABRecordRef) myRecord{ ABRecordRef newRecord = ABPersonCreate(); //some setting here return CFAutoRelease(newRecord); //how to release here? } 

对于CoreFoundation引用,我实际上不会在您的myRecord方法中释放该引用。 相反,我会定义接口,使myRecord的调用者拥有引用,并负责释放它。

你应该能够像这样为Core Foundation对象构build自己的autorelease函数:

 inline CFTypeRef MyAutorelease(CFTypeRef obj) { id __autoreleasing result = CFBridgingRelease(obj); return (__bridge CFTypeRef)result; } 

__autoreleasing ,你强制对象在autorelease池中结束。