我正在实现本质上是iOS应用程序的“主题”。该主题在编译时是已知的,并且永远不需要在运行时进行更改/重新加载。
我创建了一个Theme
类,其工作是为当前主题出售适当的UIColor
对象。该类的相关部分如下所示:
Theme.h:
+(UIColor*)primaryColor;
主题
static UIColor *primaryColor;
//only ever called once, during +[Theme initialize]
+(void)configureColors{
primaryColor = [UIColor blueColor];
}
+(UIColor*)primaryColor{
return primaryColor;
}
请注意,
+configureColors
的最终实现将包含if测试,以根据所需主题设置不同的颜色在这种情况下,我是否需要担心线程安全性?有更好的方法吗?
我担心会同时对
+primaryColor
进行2次调用。 最佳答案
您可以对primaryColor
进行一百万个并发调用,而不会出现问题(除了太多线程:))。这是一种只读方法。
唯一可能的担心是,是否在与primaryColor
同时调用configureColors
。这不是问题,因为您是从标准configureColors
方法调用initialize
的。
最重要的是,您很可能会从主线程调用primaryColor
,因为您可能会处理UI更新。