【发布时间】:2009-07-29 23:54:06
【问题描述】:
既然 Core Foundation 中没有 NSValue 的对应物,我们应该如何将 C 结构存储在 CFMutableDictionary 中?
【问题讨论】:
标签: iphone objective-c core-foundation
既然 Core Foundation 中没有 NSValue 的对应物,我们应该如何将 C 结构存储在 CFMutableDictionary 中?
【问题讨论】:
标签: iphone objective-c core-foundation
首先,您可以按原样将 NSvalue 放入 CFMutableDictionary,因此答案是“使用 NSValue”。但我认为您的其余问题是“不使用任何 Cocoa 对象”。在这种情况下,只需创建一个非保留 CFMutableDictionary,您就可以将任何您想要的指针放入其中。有关一些示例代码,请参阅"Defining Custom Collection Callbacks"。我经常使用这些。
请记住,这些仍然必须是指针,因此您必须在堆上分配结构,而不是在堆栈上。这意味着内存管理现在是您的问题。当然,您可以创建一组自定义回调来执行您想要的任何操作,因此如果您使用 boost 或其他具有自己的引用计数系统的东西,您仍然可以使用 CFMutableDictionary 来实现它。
当然你可以用一个小的数据对象来替换这个结构。这通常要容易得多。但不同的问题需要不同的解决方案。
【讨论】:
CFMutableDictionary
CFDictionaryAddValue 要添加到字典中的 CFType 对象或指针值。
你只需传递一个指向你的结构的指针。
【讨论】: