0

NSDateFormatter包括以下便捷方法:

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

文档指出,使用此方法与显式执行此操作相同:

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

现在,我在不同的地方读到初始化一个NSDateFormatter对象有相当大的开销。有谁知道localizedStringFromDate:etc类方法是否具有相同的开销,即NSDateFormatter每次调用它都会导致在幕后实例化一个新对象?

4

1 回答 1

1

我使用我NSDateFormatter的 s 作为我懒惰初始化的静态变量。像这样初始化例程只被调用一次:

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]; 
于 2012-05-30T13:14:26.890 回答