我是否可以使用常量id
/ NSObject
来保留回调?有kCFTypeDictionaryValueCallBacks
但它们仅用于“CFType派生的对象”。我不相信NSObjects是CFTypes,所以我写了这些:
const void *valueRetainCallBack(CFAllocatorRef allocator, const void *ptr)
{
id o = (id)ptr;
[o retain];
return o;
}
void valueReleaseCallBack(CFAllocatorRef allocator, const void *ptr)
{
id o = (id)ptr;
[o release];
}
但也许有一种更简单的方法?
答案 0 :(得分:3)
我是否可以使用常量id / NSObjects的常量保留回调?有
kCFTypeDictionaryValueCallBacks
但它们仅用于“CFType派生的对象”。我不相信NSObjects是CFTypes ......
它们没有被记录为完全桥接,而是用于内存管理(保留和释放),that's documented to work。在实践中,CFType和NSObject的所有常用功能(包括description
/ CFCopyDescription
)也可以正常工作。