我正在访问地址簿并使用此行并使用ARC进行编译:
ABMultiValueRef phoneNums = ABRecordCopyValue(person, kABPersonPhoneProperty);
这一行是否需要重写为:
ABMultiValueRef phoneNums = (__bridge_transfer ) ABRecordCopyValue(person, kABPersonPhoneProperty);
如果是,那么编译器是否应该生成警告? 如果没有,那么我可能不理解将ARC与核心框架结合使用。
答案 0 :(得分:2)
不,因为你没有通过做出任务来投射任何东西。您将仅在稍后CFRelease
返回引用,就像在普通所有权规则下一样。
答案 1 :(得分:2)
不,你不应该在这种情况下搭桥。 ABMultiValueRef
是CFTypeRef
。 ABRecordCopyValue
会返回CFTypeRef
。不需要桥梁。
在id
和CFTypeRef
(void*
的同义词)之间进行转换时,需要进行桥接投射。