シングルトンである必要はないコントローラを管理するためにシングルトンを過度に使用する問題に遭遇しているようです。これが役に立つことがあります。
私は最近、それらが必要だとして、に沿ってオブジェクトを渡すことにシングルトンから私の全体のプログラムを手直し。シングルトンと共有グローバルオブジェクトは同一ではなく、Apple独自のクラスはsharedObject
またはdefaultObject
を使用してインスタンスを生成し、共有インスタンスを返しますが、実際に自分の必要に合わせて別のインスタンスを作成することはできません。
シングルトンはオブジェクトを単一のインスタンスに制限します。これは、どこからでも完全にアクセスできるように、2つのインスタンス(将来必要になる可能性があります)を持つことを意味します。その意味では、1つのインスタンスの制限ではなく、実際にはアクセス部分全体が必要なだけなので、sharedObject
パターンと考えることができます。ここでは例を示します。
// Up the top in the .m file
static MySharedClass *sharedInstance;
// A class method to return the shared instance
+ (MySharedClass *)sharedInstance {
if (!sharedInstance) {
sharedInstance = [[MySharedClass alloc] init];
}
return sharedInstance;
}
は、それらがすべてによるアクセスのために、グローバルにすべてを設定するのではなく、必要とされているように私は、オブジェクトを渡すためにあなたのプログラムを構築検討する、と述べました。さもなければ、シングルトン/グローバルオブジェクトを過度に使用して記述したコードははるかに結合されており、現在のプロジェクトから引き出されずに他の場所で使用されることもなく、これらのマネージャクラスのグローバルな状態を考慮する必要があるため、
メインコントローラ(ViewController)を作成し、必要な他のコントローラクラスをインスタンス化し、それらの間でリソースを渡します。あなたが言及したこのUIViewのNSArrayは、必要に応じてチェーンの上位に格納され、おそらくトップの上に置かれます。このプレゼンターはLayoutManagerを作成し、それに必要なオブジェクトを渡して後で作業します。同様に、これらのオブジェクトをBlockManagerとColorManagerに渡します。
私は、その意味でデリゲートを使用してビューコントローラに配列を残すことを考えていませんでした。私はそれを試してみる。私はビュー内のすべてを管理することになっているクラスはViewControllerだと思うので、理にかなっています。 – jadengeller