也许一个愚蠢的问题要问,但我需要一些关于它的确认。
通常,当我处理,可我的应用程序中多次使用的对象我用类似下面的方法。
创建扩展,例如说NSDecimalNumber+Extension
,或其中一个数字格式化的像下面创建的类的效用。
+ (NSNumberFormatter*)internal_sharedNumberFormatter
{
static NSNumberFormatter* _internal_numberFormatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_internal_numberFormatter = [[NSNumberFormatter alloc] init];
// other configurations here...
});
return _internal_numberFormatter;
}
+ (NSString*)stringRepresentationOfDecimalNumber:(NSDecimalNumber*)numberToFormat
{
NSString *stringRepresentation = [[self class] internal_sharedNumberFormatter] stringFromNumber:numberToFormat];
return stringRepresentation;
}
这种做法是相当不错的,因为,例如,格式化是昂贵创建。 但也可以应用于其他的情景。
现在,我的问题如下。
请问这种方法也是有效的情况下,执行地方(不同的线程)的不同路径参与?
所以,如果我先打电话stringRepresentationOfDecimalNumber
主线程,然后在不同的线程,会发生什么?
我认为是有效的,以执行不同的呼叫stringRepresentationOfDecimalNumber
在不同的线程,因为共享的格式,在这种情况下,只有读书,但我希望有专家的答复。
提前致谢。