iOS:有关应用程序设计以及如何在viewController之间共享NSDictionary的简单问题

问题描述

|| 我有一个简单的设计问题。这段代码在我的appDelegate中。我用它来加载NSDictionary类别中的所有图像。接下来,我将字典传递给主NavigationViewController的init方法。接下来,我将字典通过NavigationViewController推送的所有viewController,因为我到处都使用相同的图标。 我想知道这是否是正确的方法,还是我只是在浪费内存。换句话说,我应该将字典通过viewControllers传递,还是应该使用单例..或什么?我目前采用这种方法的原因是,我没有从viewControllers到应用程序委托的任何引用。
//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初始化方法
FlickrAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;

categories = appDelegate.categories;
categKeys = appDelegate.categoriesKeys;
    

解决方法

        将所有代码放入一个函数中的appDelegate中,并在applicationDidFinishLaunching方法中调用该函数。像这样在应用程序中的任何地方访问字典
appNameDelegate* appDelegate = [UIApplication sharedApplication].delegate;

[appdelegate.categories objectForKey:@\"WhatEver\"];
    ,        我可能会创建一个Singleton。许多人喜欢在AppDelegate中放置共享代码,但是随后该文件变得混乱,并且不清楚整个文件中发生了什么。将Singleton专用于此逻辑可以分离代码并使更改更容易。