在CFMutableDictionary中存储C结构

时间:2009-07-29 23:54:07

标签: iphone objective-c core-foundation

由于Core Foundation中没有与NSValue相对应的内容,我们如何在CFMutableDictionary中存储C结构?

2 个答案:

答案 0 :(得分:6)

首先,你可以按原样将NSvalue放在CFMutableDictionary中,所以答案是“使用NSValue”。但我认为你的其余问题是“没有使用任何Cocoa对象。”在这种情况下,只需创建一个不保留的CFMutableDictionary,您就可以将任何指针放入其中。有关示例代码,请参阅"Defining Custom Collection Callbacks"。我经常使用这些。

请记住,这些仍然必须是指针,因此您将不得不在堆上分配结构,而不是堆栈。这意味着内存管理现在是您的问题。当然你可以创建一个自定义的回调集,它可以做你想做的任何事情,所以如果你在自己的引用计数系统中使用boost或其他东西,你仍然可以用CFMutableDictionary实现它。

当然,您可以使用小型数据对象替换struct。这通常要容易得多。但是不同的问题需要不同的解决方案。

答案 1 :(得分:1)

CFMutableDictionary

CFDictionaryAddValue 要添加到字典中的CFType对象或指针值。

你只需将指针传递给你的结构。