我正在使用ARC,我有一个对象,其引用必须传递给结构:
myStruct->myObject = (__bridge void *)self;
在某些情况下,除了此结构中的标准引用之外的所有标准引用都将超出范围,但我仍然希望结构保持对象的保留计数不会达到0。
我可以这样做吗? :
CFRetain(myStruct->myObject);
然后当我破坏我的结构时,只需调用
CFRelease(myStruct->myObject);
这些是在void * bridged引用上调用的,我不确定它们是否保持实际的Objective-C类活着。
答案 0 :(得分:4)
是的,这很有效。请注意,您也可以写
myStruct->myObject = CFBridgingRetain(self);
将Objective-C对象转换为const void *
并“取得所有权”。