4

iOS5 以降 (ARC が有効) でのベスト プラクティスについて意見を求めたいと思います。たとえば、車のデータベースがあります-画像、名前、最高速度などの情報。アプリでは、情報を含む車を表示する必要があります。次に、ユーザーの操作の後、次の車、次に...前の車に移動することはありません。

私が車のクラスを持っている場合、どちらがより良い解決策であり、その理由は何ですか?

解決策 1: alloc と init を使用して初めて Car のインスタンスを作成し、次に毎回表示する必要があるときは、既存の値を変更して (速度を 250 から 180 に) 新しいデータでこのインスタンスを更新するだけです。 、黒から赤への色など)

解決策 2: 毎回 alloc と init を使用して、ARC が以前に使用されたメモリを解放できるようにし、以前に割り当てられたオブジェクトを忘れるだけです。

解決策 3: おそらく他の解決策もあるでしょう。この問題を解決する方法 - 私はそれらを聞きたいと思っています。

前もって感謝します

4

2 に答える 2

4

クラスが実際に Car クラスである場合は、データベース内の 1 台の車を表す必要があり、データベース エントリを表示するための何らかの種類のハンドラー オブジェクトではありません。それを行いたい場合は、少なくとも、そのような作業を行うように適切に名前が付けられ、構成されたクラスにする必要があります。

データベースから読み取ったすべての車に対して Car インスタンスを作成しても問題はありません。

于 2012-09-25T12:52:09.557 に答える
2

ディスクからメモリへのイメージのロードは、おそらく最も時間がかかります。したがって、ソリューション間の速度に大きな違いはないと思います。

メモリ使用量もほぼ同じになります。最初のアプローチでは、新しい値を設定すると、イメージと他のすべてのインスタンス変数が解放されます。2 番目の方法では、Car インスタンス全体が解放され、すべてのインスタンス変数が解放されます。

ソフトウェア設計の観点からは、2 番目のソリューションを使用することをお勧めします。Car インスタンスは、車のインスタンスを正確に表す必要があります。そのインスタンスを 1 つしか持たず、その値を常に変更するのは誤解を招く可能性があります。そのようなことをしたい場合は、クラスの名前を CarManager のような名前に変更し、シングルトン オブジェクトを使用するか、クラス メソッドを使用することをお勧めします。

于 2012-09-25T12:56:41.693 に答える