我有一个内存管理问题,我似乎无法找到解决方案。代码如下:
-(ABRecordRef)convertABCPerson:(ABCPerson*) person{
// create new address book person record
ABRecordRef aRecord = ABPersonCreate();
[self setValuesFor:person toARecord:aRecord];
return aRecord;
}
所以我将自己的类转换为ABRecordRef,现在我需要以某种方式“自动释放”这个对象(所以我可以在不同的对象中获得所有权)。我正在使用ARC而ABRecordRef无法通过桥接到Cocoa基础类。我有什么想法可以解决这个内存管理问题吗?
感谢您的帮助:)
答案 0 :(得分:3)
我找到了解决问题的方法。我唯一要做的就是将它转换为id并使用桥接传输让ARC处理内存管理。从另一个类中,您可以将ABRecordRef强制转换为__bridge,以便ARC正确处理记录。
解决方案:
-(id)convertABCPerson:(ABCPerson*) person{
// create new address book person record
ABRecordRef aRecord = ABPersonCreate();
[self setValuesFor:person toARecord:aRecord];
id record = (__bridge_transfer id)aRecord;
return record;
}
退回:
personViewController.displayedPerson = (__bridge ABRecordRef)[[ABCFacade sharedABCFacade] convertABCPerson:goldenRecord];