CFDictionaryValueCallBacks保留/释放?

时间:2010-07-19 06:08:08

标签: objective-c core-foundation

我是否可以使用常量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];
}

但也许有一种更简单的方法?

1 个答案:

答案 0 :(得分:3)

  

我是否可以使用常量id / NSObjects的常量保留回调?有kCFTypeDictionaryValueCallBacks但它们仅用于“CFType派生的对象”。我不相信NSObjects是CFTypes ......

它们没有被记录为完全桥接,而是用于内存管理(保留和释放),that's documented to work。在实践中,CFType和NSObject的所有常用功能(包括description / CFCopyDescription)也可以正常工作。