0

配列employees1があると仮定します:

[
{"id":"1", "name":"Bill"},
{"id":"2", "name":"Jhon"},
{"id":"3", "name":"Almas"},
]

またはオブジェクトを持つ配列employees2 :Employee

@interface Employee : NSObject {
    NSNumber *employeeID;
    NSString *name;
}
@property (nonatomic, retain) NSNumber *employeeID;
@property (nonatomic, retain) NSString *name;

2番目のケースは、よりオブジェクト指向であり、大規模なプロジェクトで簡単に使用できます。
従業員が多い場合、employee2配列はemployee1よりも多くの(2x、3x ...)メモリを割り当てますか?それらはどのくらい異なりますか?

4

2 に答える 2

1

ほとんどの場合、インスタンスのオーバーヘッドを必要としないため、オブジェクト指向モデルを使用するとメモリ フットプリントが小さくなる可能性がありNSDictionaryます。

ただし、(先ほど行ったように) 簡単なテスト ケースを作成し、Instruments で実行して、それを自分で証明することはできます。この場合、私はあなたのモデルでそのようなテストを構築し、10K オブジェクトを作成し、カスタム オブジェクトを使用して全体的なメモリ フットプリントが最大 23% 削減されることを示しました。

常にテストすることをお勧めしますが、正直なところ、オブジェクト指向モデルは非常に明確であるため、長期的には、マイナスの差であってもメモリフットプリントの小さな差の方が優れている可能性があります.

NSDictionary編集するには: ここや他の場所で、およびのアプリケーションのモデル層全体の構築に関連する多くの質問を目にしますNSArray。そのコードを永続的に維持することがどれほどの頭痛の種になるか想像できません。オブジェクト指向を使用すると、はるかに明確になります。

于 2012-12-07T10:51:10.063 に答える
0

それが実際に問題になる前に、あなたは本当にこれらのことについて心配するべきではありません。また、メモリ問題がある場合は、すべての従業員を一度にメモリに保存する必要はありません。つまり、データをディスクに保持し、必要に応じてデータをフェッチする必要があります。 これは、メモリ管理とメモリ関連の問題を防ぐ方法に関するガイドです。

于 2012-12-07T10:45:38.130 に答える