我有一个内存管理问题,我似乎找不到解决方案。代码如下:
-(ABRecordRef)convertABCPerson:(ABCPerson*) person{
// create new address book person record
ABRecordRef aRecord = ABPersonCreate();
[self setValuesFor:person toARecord:aRecord];
return aRecord;
}
所以我将自己的类转换为ABRecordRef,现在我需要某种方式“自动释放”该对象(这样我就可以拥有其他对象的所有权)。我正在使用ARC,并且ABRecordRef无法收费到Cocoa基础类。有什么想法可以解决这个内存管理问题吗?
谢谢您的帮助 :)
最佳答案
我找到了解决问题的办法。我唯一要做的就是将其转换为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];
关于ios - 处理核心基础类时的内存管理问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11685666/