2

我正在使用 ARC,并且我有一个必须将其引用传递给结构的对象:

myStruct->myObject = (__bridge void *)self;

在某些情况下,除此结构中的标准引用之外的所有标准引用都将超出范围,但我仍然希望结构保持对象的保留计数不为 0。

我可以这样做吗?:

CFRetain(myStruct->myObject);

然后当我破坏我的结构时,只需调用

CFRelease(myStruct->myObject);

这些在 void* 桥接引用上被调用,我不确定它们是否使实际的 Objective-C 类保持活动状态。

4

1 回答 1

4

是的,这行得通。注意你也可以写

myStruct->myObject = CFBridgingRetain(self);

将 Objective-C 对象转换为 aconst void *并“取得所有权”。

于 2013-10-05T19:30:11.823 回答