我在使用以下地址簿代码时出现此问题(效果很好,但绝对泄漏):
ABMultiValueRef email = ABRecordCopyValue(person, property);
NSString *type = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(email, 0));
self.textEmail.text = type;
CFRelease(email);
我已经使用CFRelease(电子邮件)声明修复了一个泄漏,但无法解决此问题:
我不能调用[type release],因为这是一个ARC项目,不允许CFRelease((CFTypeRef)类型)。我该如何发布桥接实例?
答案 0 :(得分:7)
将__bridge更改为__bridge_transfer。这将使type成为引用的所有者,因此将在范围结束时自动释放。
答案 1 :(得分:2)
只需添加此方法,而不是CFRelease(电子邮件);
if(email) { CFRelease(电子邮件); }