由于Core Foundation中没有与NSValue相对应的内容,我们如何在CFMutableDictionary中存储C结构?
答案 0 :(得分:6)
首先,你可以按原样将NSvalue放在CFMutableDictionary中,所以答案是“使用NSValue”。但我认为你的其余问题是“没有使用任何Cocoa对象。”在这种情况下,只需创建一个不保留的CFMutableDictionary,您就可以将任何指针放入其中。有关示例代码,请参阅"Defining Custom Collection Callbacks"。我经常使用这些。
请记住,这些仍然必须是指针,因此您将不得不在堆上分配结构,而不是堆栈。这意味着内存管理现在是您的问题。当然你可以创建一个自定义的回调集,它可以做你想做的任何事情,所以如果你在自己的引用计数系统中使用boost或其他东西,你仍然可以用CFMutableDictionary实现它。
当然,您可以使用小型数据对象替换struct。这通常要容易得多。但是不同的问题需要不同的解决方案。
答案 1 :(得分:1)
CFMutableDictionary
CFDictionaryAddValue 要添加到字典中的CFType对象或指针值。
你只需将指针传递给你的结构。