我正在访问地址簿并有这一行并且正在使用 ARC 进行编译:
ABMultiValueRef phoneNums = ABRecordCopyValue(person, kABPersonPhoneProperty);
这一行是否需要重写为:
ABMultiValueRef phoneNums = (__bridge_transfer ) ABRecordCopyValue(person, kABPersonPhoneProperty);
如果是,那么编译器不应该生成警告吗? 如果不是,那么我可能无法完全理解将 ARC 与核心框架结合使用。
最佳答案
不,在这种情况下你不应该桥接。 ABMultiValueRef
是一个 CFTypeRef
。 ABRecordCopyValue
返回一个 CFTypeRef
。不需要桥梁。
当您在 id
和 CFTypeRef
(void*
的同义词)之间进行转换时,需要进行桥接转换。
关于ios - __bridge_transfer 和 ABRecordCopyValue : and ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217548/