我有一个内存管理问题,我似乎找不到解决方案。代码如下:

-(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/

10-14 21:18