1

アプリのさまざまな画面から表示されるビューがあります。各画面からビューを割り当てて初期化したくありません。これは、次の 2 つのアプローチを使用して実行できると考えました。

1) App Delegate でビューを初期化し、すべての画面から同じビューにアクセスします。(:私のアプリは横向きのみをサポートしているため、ウィンドウにビューを追加したくありません。これにより、ビューの向きを管理するためのスパゲッティコードが大量に発生します。)

2) 代わりにビューをシングルトンにする

現在、Singleton パターンが一般的に良いか悪いかについて多くの議論がありました。また、View Controller にシングルトンを使用することは悪い考えと見なされることも知っています。

これを達成するためのより良いアプローチはありますか??

4

4 に答える 4

0

シングルトンは最新のグローバル変数であるため、どうしても必要な場合を除いて、シングルトンは避けようとしています。Appleの低メモリグローバルを使用すると、Carbonに移植するときにあらゆる種類の問題が発生しました。

ライブラリを保守している場合は、ライブラリごとにシングルトンのインスタンスがあることに注意してください。そのため、誰がライブラリにアクセスしているかに注意する必要があります。私はLokiシングルトン実装(C ++)でこれに遭遇しましたが、Objective-Cシングルトンでも同じ問題が発生することは理にかなっています。

于 2012-07-19T13:17:11.543 に答える
0

シングルトンを使用するか、アプリ デリゲートのプロパティを使用することは、同じことを達成する同等の方法です。すべての「利害関係者」に渡される共通の構造を使用することもできます。

どちらを選択するかはあなた次第です。「理想的な」選択は状況によって異なります。

ただし、最終的に数十または数百のシングルトンになることに注意してください。これは通常、設計が十分に考えられていないことを示しています。

于 2012-07-19T13:03:15.703 に答える
0

アプリのさまざまな画面から表示されるビューがあります。各画面からビューを割り当てて初期化したくありません。

必要に応じてビューを作成したくないのはなぜですか? ビューは大量のメモリを使用します:

  • Retina 以外の iPhone でハーフスクリーン表示 (240*320) を行うには、ピクセルだけで 300KB が必要です。

  • Retina ディスプレイで同じビューを表示するには、1.2MB が必要です

その理由だけでも、実際に必要なときにのみ共通のビューを割り当てることは、非常に良い考えのように思えます。ビューが表示されていないときにビューにぶら下がっても、何も得られません。

于 2012-07-19T21:29:48.967 に答える