【发布时间】:2013-10-05 19:04:23
【问题描述】:
我正在使用 ARC,并且我有一个对象,其引用必须传递给结构:
myStruct->myObject = (__bridge void *)self;
在某些情况下,除此结构中的标准引用之外的所有标准引用都会超出范围,但我仍然希望结构保持对象的保留计数不为 0。
我可以这样做吗? :
CFRetain(myStruct->myObject);
然后当我销毁我的结构时,只需调用
CFRelease(myStruct->myObject);
这些在 void* 桥接引用上被调用,我不确定它们是否使实际的 Objective-C 类保持活动状态。
【问题讨论】:
-
如果 ARC 在您调用 CFRetain() 之前决定它可以释放您的对象,这可能是有风险的。 CFBridgingRetain() 可以安全地避开该窗口。
标签: objective-c automatic-ref-counting