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