ios - 有什么方法可以使用全局静态字典来访问 objective-c ios 中的所有 View Controller 吗?

标签 ios objective-c singleton

我正在尝试实现一个能够访问所有类的静态全局字典。除了单例还有其他方法吗?我在堆栈溢出中尝试了很多我无法得到任何解决方案有人帮助我解决这个问题。 这是我的字典代码。

 NSDictionary *colors = @{@"black": [UIColor blackColor], @"pink": [UIColor purpleColor], @"blue": [UIColor blueColor], @"red": [UIColor redColor], @"yellow": [UIColor yellowColor]};

我在我的类(class)中使用这样的用户默认值。

 NSString *savedValue = [[NSUserDefaults standardUserDefaults]
                            stringForKey:@"colordatafromthisvc"];
    UIColor *color = colors[savedValue] ?: [UIColor orangeColor];
        _nxtbtnlet.backgroundColor = color;

最佳答案

为此目的使用单例一直被认为是最好的。

如果你被迫不使用单例,你可以使用:

选项 1

.h文件中:

extern NSDictionary *GlobalDictionary;

.m文件中:

NSDictionary *GlobalDictionary;

然后,在相应的 .m 文件的初始化函数(或应用程序启动后肯定会调用的任何其他方法)中,您可以:

GlobalDictionary = @{@"black": [UIColor blackColor], @"pink": [UIColor purpleColor], @"blue": [UIColor blueColor], @"red": [UIColor redColor], @"yellow": [UIColor yellowColor]};

您现在可以从任何包含其头文件的文件访问 GlobalDictionary,如下所示:

UIColor *color = [GlobalDictionary objectForKey:@"blue"];

选项 2

考虑将 UIColor 本身保存到 UserDefaults

检查一下:Saving UIColor to and loading from NSUserDefaults

关于ios - 有什么方法可以使用全局静态字典来访问 objective-c ios 中的所有 View Controller 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982871/

相关文章:

ios - NSdictionary 作为数据类型

iOS arc4random 不是从 0 开始

c++ - 派生类和单例

android - 使用单例对象来保存状态或在 Activity 之间共享数据是否可以接受?

ios - 弹出窗口中无法识别的选择器

c++ - 在 C++ 中使用单例

ios - 我如何断言在我的单元测试中调用了委托(delegate)

ios - 无法停止 AVPlayer

objective-c - 当我们只能使用 NSObject 时,为什么还要使用 id?

objective-c - 使用 contentScaleFactor 属性缩放 UITextView