由于 Core Foundation 中没有与 NSValue 对应的对象,我们该如何将 C 结构体存储在 CFMutableDictionary 中呢?
首先,您可以按原样将 NSvalue 放入 CFMutableDictionary 中,因此答案是“使用 NSValue”。但我认为你的其余问题是“不使用任何 Cocoa 对象”。在这种情况下,只需创建一个非保留 CFMutableDictionary,然后您可以将任何您想要的指针放入其中。看“定义自定义集合回调” http://developer.apple.com/library/ios/#DOCUMENTATION/CoreFoundation/Conceptual/CFCollections/Articles/creating.html#//apple_ref/doc/uid/20001132-101215-CHDEBBDB一些示例代码。我经常使用这些。
请记住,这些仍然必须是指针,因此您必须在堆上分配结构,而不是堆栈。这意味着内存管理现在是您的问题。当然,您可以创建一组自定义回调来执行您想要的任何操作,因此,如果您使用 boost 或其他具有自己的引用计数系统的东西,您仍然可以使用 CFMutableDictionary 来实现。
当然,您可以用一个小数据对象替换该结构。这通常容易得多。但不同的问题需要不同的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)