【发布时间】:2013-11-13 00:26:06
【问题描述】:
我有一个块对象,它被转换为 void * 指针以传递给 C 库。我正在部署到 OS X 10.6,所以 CFBridgingRetain 和 CFBridgingRelease 不可用。
相反,我正在做:
void ptr_retain(void (^block)()) {
void *ptr = (__bridge_retained void *)(block);
...
// pass ptr to C lib
}
void ptr_release(const void *ptr) {
// C lib calls this function
void (^block)() = (__bridge_transfer void(^)())ptr;
}
问题:
在 ptr_release 我收到“未使用的变量”警告。我担心编译器可能会优化__bridge_transfer 行并且该块永远不会被释放。这会发生吗?即使没有,这是让ARC知道在ptr_release末尾释放块的正确方法吗?
【问题讨论】:
标签: objective-c automatic-ref-counting objective-c-blocks void-pointers toll-free-bridging