我正在实现本质上是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更新。

10-08 06:28