すべてのデータ メンバーを に保存する必要がある状況では、構造体 (カスタム型、またはスカラー、つまり) を独自のラッパー ( ではなく)NSDictionary
に配置する方が理にかなっているので、エンコード/デコードのオーバーヘッドを回避できます。メンバーを取得または設定するたびに?CGPoint
NSValue
大きな構造体 (16 個の浮動小数点数) の場合、節約は IMO で重要です。しかし、CGPoint
私は 4 バイトのコピーとエンコード/デコード時間を節約できます。
すべてのデータ メンバーを に保存する必要がある状況では、構造体 (カスタム型、またはスカラー、つまり) を独自のラッパー ( ではなく)NSDictionary
に配置する方が理にかなっているので、エンコード/デコードのオーバーヘッドを回避できます。メンバーを取得または設定するたびに?CGPoint
NSValue
大きな構造体 (16 個の浮動小数点数) の場合、節約は IMO で重要です。しかし、CGPoint
私は 4 バイトのコピーとエンコード/デコード時間を節約できます。
実際にはさらに一歩進んでください。構造体を完全に破棄して、モデルオブジェクトにします。次に、ロジック(たとえば、計算されたプロパティ)をそれに統合し、関連する形式でそれ自体をエンコードおよびデコードしたり、コレクションに入れたりする機能を提供できます。
特定のケースで測定してみませんか?それが、それを見つけるための唯一の本当に信頼できる方法です。
両方のオプションが十分でない場合は、それに応じて値のコールバックCFDictionary
を設定することによってプレーンな構造体へのポインターを調べるか、スピンのために C++ /を取得できます (C++ での混合を気にしない場合)。std::map
std::tr1::unordered_map
とにかく、NSDictionary 型はメンバーとしてオブジェクトを必要とするため、NSDictionary に構造体を格納することはできません。コンテナオブジェクトにラップする必要があります。