2010-07-19 141 views
1

有一個恆定保持回調,我可以使用通用id/NSObject S'有kCFTypeDictionaryValueCallBacks但它們僅適用於「CFType派生對象」。我不認爲NSObject是CFType,所以我寫了這些:CFDictionaryValueCallBacks保留/釋放?

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]; 
} 

但也許有一種更簡單的方法?

回答

3

是否有一個常量保留回調我可以使用通用的id/NSObject?有kCFTypeDictionaryValueCallBacks但它們僅適用於「CFType派生對象」。我不相信NSObject是CFTypes ...

它們沒有記錄爲完全橋接,但是對於內存管理(保留和釋放),that's documented to work。在實踐中,所有的共同CFType和NSObject的功能,包括description/CFCopyDescription,工作也是如此。