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
对象被实例化?
答案 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];