2
+(NSString*)FromNumber:(NSNumber*)number
{
    NSString *key = akey;
    NSNumberFormatter *numberFormatter = [[[NSThread currentThread] threadDictionary] objectForKey:key];
    if(!numberFormatter)
    {
        numberFormatter = [self getDecimalNumberFormatterWithDigits:2];
        [numberFormatter setFormatterBehavior:NSNumberFormatterPercentStyle];

        [numberFormatter setNegativeSuffix:@"%"];
        [numberFormatter setPositiveSuffix:@"%"];
        [numberFormatter setNilSymbol:@""];
        [numberFormatter setLocale:[ISMDateUtilities enUSPosixLocale]];

        [[[NSThread currentThread] threadDictionary] setValue:numberFormatter forKey:key];
    }
    return [numberFormatter stringForObjectValue:number];
}

我很好奇threadDictionary用于同步代码块?

谢谢!

4

1 回答 1

4

此代码的线程安全性取决于akey是否为常量。如果是,那么是的,这个方法是线程安全的,因为它在线程之间不共享任何状态。(不过,我不确定您所说的“同步”是什么意思——据我所知,这里没有同步工作。)

于 2013-07-31T20:20:12.810 回答