微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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专用于此逻辑可以分离代码并使更改更容易。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。