__bridge_transfer和ABRecordCopyValue:和ARC

时间:2012-02-09 19:39:28

标签: ios

我正在访问地址簿并使用此行并使用ARC进行编译:

 ABMultiValueRef phoneNums = ABRecordCopyValue(person, kABPersonPhoneProperty);

这一行是否需要重写为:

ABMultiValueRef phoneNums = (__bridge_transfer ) ABRecordCopyValue(person, kABPersonPhoneProperty);

如果是,那么编译器是否应该生成警告? 如果没有,那么我可能不理解将ARC与核心框架结合使用。

2 个答案:

答案 0 :(得分:2)

不,因为你没有通过做出任务来投射任何东西。您将仅在稍后CFRelease返回引用,就像在普通所有权规则下一样。

答案 1 :(得分:2)

不,你不应该在这种情况下搭桥。 ABMultiValueRefCFTypeRefABRecordCopyValue会返回CFTypeRef。不需要桥梁。

idCFTypeRefvoid*的同义词)之间进行转换时,需要进行桥接投射。