-3

这是我目前所做的:

基本上我在做桥接时有这两条规则

从 CF 土地转换为 NS 土地,使用 CFBridgingRelease 从 NS 土地转换为 CF 土地,使用 __bridge。

我从未见过苹果的示例代码以不同的方式进行。

这是一个示例:

ABRecordRef ABWhatIsThis= (__bridge ABRecordRef)([self.allMyContacts objectAtIndex:indexPath.row]);

NSString * strName= CFBridgingRelease (ABRecordCopyCompositeName (ABWhatIsThis));

原因是当我想将某些东西从 NS 土地转换为 CF 土地时,我不想改变所有权。ARC 将保持 NS 土地上的保留计数,并使 CF 土地中的对象保持活动状态,直到其 NS 土地对应部分被破坏。

这就是为什么我用ABRecordRef ABWhatIsThis= (__bridge ABRecordRef)

如果我将某些东西从 CF 土地转换为 NS 土地,我将使用 CFBridgingRelease。原因是一旦我得到一个指向 CFBridging 的 ARC 对象,我就不会让 CFBridging 保留这些东西。

但是,我仍然感到困惑。当我应该使用 CFBridgingRelease 时,是否有硬性规定?

我还注意到没有 CFBridging 这样的东西。只有 CFBridgingRelease 和 CFBridgingRetain。我想知道为什么不平衡。

4

1 回答 1

0

__bridge transfers a pointer between Objective-C and Core Foundation with no transfer of ownership.

__bridge_retained or CFBridgingRetain casts an Objective-C pointer to a Core Foundation pointer and also transfers ownership to you. You use this functions to cast an Objective-C object as Core Foundation-style object and take ownership of the object so that you can manage its lifetime. You are responsible for subsequently releasing the object

于 2013-03-28T09:07:22.943 回答