既然 Core Foundation 中没有 NSValue 的对应物,我们应该如何将 C 结构体存储在 CFMutableDictionary 中?

最佳答案

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

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

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

关于iphone - 在 CFMutableDictionary 中存储 C 结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1203726/

10-11 00:36