3

在我需要将所有数据成员保存在 a 中的情况下,NSDictionary将结构(自定义类型,甚至标量 ie CGPoint)放在我自己的包装器(不是NSValue)中是否更有意义,这样我就可以避免编码/解码的开销每次我获取或设置成员?

对于大型结构(16 个浮点数),IMO 的节省意义重大。但即使使用 aCGPoint我也会节省 4 个字节的复制以及编码/解码时间。

4

3 回答 3

3

为什么不针对您的具体情况进行测量?这是找到它的唯一真正可靠的方法。

如果这两个选项都不够,您可以通过相应地设置值回调CFDictionary来查看指向普通结构的指针,或者使用 C++ /进行旋转(如果您不介意在 C++ 中混合)。std::mapstd::tr1::unordered_map

于 2010-07-19T02:51:45.570 回答
3

您实际上可能会更进一步:完全放弃结构并将其设为模型对象。然后,您可以将逻辑(例如,计算属性)集成到其中,并使其能够以任何相关格式对其自身进行编码和解码,以及将其放入集合中。

于 2010-07-19T06:10:54.010 回答
1

好吧,NSDictionary 类型无论如何都需要对象作为它们的成员,因此您不能将结构存储在 NSDictionary 中。您必须将其包装在容器对象中。

于 2010-07-19T02:36:27.160 回答