CFRetain是否保持桥接的ObjC对象存活?

时间:2013-10-05 19:04:24

标签: objective-c automatic-ref-counting

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

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

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

我可以这样做吗? :

CFRetain(myStruct->myObject);

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

CFRelease(myStruct->myObject);

这些是在void * bridged引用上调用的,我不确定它们是否保持实际的Objective-C类活着。

1 个答案:

答案 0 :(得分:4)

是的,这很有效。请注意,您也可以写

myStruct->myObject = CFBridgingRetain(self);

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