私はシンプルなデザインの質問があります。このコードは私のappDelegateにあります。 NSDictionaryカテゴリのすべての画像を読み込むために使用します。次にNavigationViewControllerメインメソッドのinitメソッドに辞書を渡します。私はどこでも同じアイコンを使用しているので、NavigationViewControllerによってプッシュされたすべてのviewControllerを通して辞書を渡します。iOS:アプリケーションデザインに関する簡単な質問とviewControllersの間でNSDictionaryを共有する方法
これが正しい方法であるかどうか、私はメモリを浪費していますか?言い換えれば、私はviewControllersを介して辞書を渡す必要がありますか、または私はシングルトンを使用する必要があります..または何?私が現在このアプローチを採用しているのは、viewControllerからアプリケーションデリゲートへの参照がないからです。
//load categories pictures
NSArray *categoriesKeys = [[NSArray alloc] initWithObjects:
@"comedy",
@"commercial",
@"education",
@"family",
@"media",
@"music",
@"performing",
@"sport",
nil];
categories = [[NSMutableDictionary alloc] init];
for (NSString *categKey in categoriesKeys) {
UIImage * categImage = [UIImage imageNamed:[[@"icons/" stringByAppendingString:categKey] stringByAppendingString:@".png"]];
[categories setObject:categImage forKey:categKey];
}
更新:
のViewControllerのinitメソッド
FlickrAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
categories = appDelegate.categories;
categKeys = appDelegate.categoriesKeys;
これは、UIViewControllerがappDelegateのインターフェイスを知っていることを意味していることを意味していますか?しかし、これは悪いOOデザインではない場合は、私はそれに行くよりも。 – aneuryzm
@Patrickこれはグローバル変数の要件です。 Look appDelegateはシングルトンクラスなので、プロパティを持つインスタンス変数にはアプリ内のどこにでもアクセスできます。 –
OK。最後の1つの質問:質問に追加したコードはどうですか?私はオブジェクトをクラスメンバーに割り当てています(私はそれらがiVarと呼ばれていると思います)。違いますか ?私は辞書を2回割り当てていますか? – aneuryzm