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 に答える