これが初心者の質問である場合は申し訳ありませんが、プログラミングを学び始めているため、いくつかの簡単なことにつまずいてしまいます。ViewControllers の 1 つで NSDateFormatter を使用して、必要な日付を特定の形式で表示し、形式が変わらない場合、その NSDateFormatter をクラスの ivar またはクラスのプロパティとして宣言するのが「ベスト プラクティス」ですか? viewDidLoad で初期化して、さまざまなメソッドで再利用できるようにしますか? 現在、表示を処理するメソッドで必要なときにインスタンス化するだけで、宣言を続けるか、一度宣言してviewControllerクラス全体で使用する方がよいかどうか疑問に思っていました。ありがとう!
3 に答える
これは「初歩的な質問」ではありません。それは合理的な答えを伴う合理的な質問です。
純粋な効率の観点からは、時期尚早に最適化しています。くよくよせずに楽しくやろうぜ。(NSDateFormatters をリークしないように) メモリを正しく管理している場合、特にこれが非常に軽量なオブジェクトであることを考えると、特定のインスタンスをどのように取得するかは問題ではありません。ループで新しい NSDateFormatter を 1000 回作成している場合、それはばかげていますが、必要なときにオブジェクトを作成していて、適切に存在しなくなっている場合は、大したことではありません。
一方、アーキテクチャの観点からは、実行していることは DRY であることを確認してください。日付フォーマッタに構成が必要な場合は、作成するたびに同じことを繰り返さないでください。毎回同じ方法で日付フォーマッターを提供するメソッドを作成して、構成コードがすべて 1 か所に収まるようにします。
どのオブジェクトについても、実行時に宣言し、使用して解放することをお勧めします。これにより、メモリ内でそのオブジェクトにかかる時間が最大のままになります。
従業員の年齢など、クラス全体で同じivarの値が必要な場合は、ivarを作成します。年功序列、ageWiseカテゴリなどのさまざまな方法でチェックされます。さらに、このiVarがオブジェクトの場合、 iPhone では、メモリ管理の問題がコンパイラ側に移行するように、常にプロパティとして使用することをお勧めします。
あなたの場合、日付オブジェクトを受け取って文字列を返す単純なメソッドを生成するか、パラメータとして任意の文字列を返し、日付オブジェクトを返し、そこで NSDateFormater を作成して使用することができます。iVar にする必要はありません。
新しいオブジェクトをインスタンス化すると、常にメモリと計算時間が犠牲になります。そのため、あまり労力をかけずに可能であれば、一度宣言してから、少なくとも同じクラス内で再利用するようにしてください。NSDateFormatter
ただし、スレッドセーフではないため、異なるスレッド間で 1 つのインスタンスを単純に共有することはできません。