NSDateFormatter的开销为localizedStringFromDate:dateStyle:timeStyle:class方法

时间:2012-05-30 12:39:53

标签: objective-c ios nsdateformatter

NSDateFormatter包含以下便捷方法:

+ (NSString *)localizedStringFromDate:(NSDate *)date dateStyle:(NSDateFormatterStyle)dateStyle timeStyle:(NSDateFormatterStyle)timeStyle

documentation表示使用此方法与显式执行此操作相同:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[formatter setDateStyle:dateStyle];
[formatter setTimeStyle:timeStyle];
NSString *result = [formatter stringForObjectValue:date];

现在,我已经在不同的地方读过初始化NSDateFormatter对象的开销很大。有没有人知道localizedStringFromDate:etc类方法是否具有相同的开销,即它每次调用时都会导致新的NSDateFormatter对象被实例化?

1 个答案:

答案 0 :(得分:1)

我使用NSDateFormatter作为静态变量,我懒得初始化。像这样,init例程只调用一次:

static NSDateFormatter *formatter = nil;
if (!formatter) {
   formatter = [[NSDateFormatter alloc] init];
   [formatter setDateStyle:dateStyle];
   [formatter setTimeStyle:timeStyle];
}
NSString *result = [formatter stringFromDate:date]; 
// reuse
[formatter setDateStyle:anotherDateStyle];
[formatter setTimeStyle:anotherTimeStyle];
NSString *anotherResult = [formatter stringFromDate:anotherDate];