0

在调用期间,tableView:cellForRowAtIndexPath:我正在调用此函数将日期格式化为时间:

- (NSString *)_formatDate:(NSDate *)date withString:(NSString *)string {
    NSLocale *locale = [NSLocale currentLocale];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:string options:0 locale:locale];
    [formatter setDateFormat:dateFormat];
    [formatter setLocale:locale];
    return [formatter stringFromDate:date];
}

我正在传递行的日期以及字符串@"HH:mm"

不幸的是,这似乎落后于我的表格视图。类似的事情发生在我正在格式化为完整日期的部分标题中。

有什么理由应该如此落后于我的应用程序吗?这些电话是否特别密集?

谢谢

汤姆

4

1 回答 1

3

据说创建日期格式化程序很昂贵。使用实例变量并在 中设置单个日期格式化程序viewDidLoad,然后在每次需要时重用相同的格式化程序。或根据需要延迟加载一个。

如果昂贵的不是创建,而是日期字符串的解析,请预先保存日期的解析副本并改用它。不过,您将不得不担心位置和语言环境的变化等事情,因此它变得更加复杂。

于 2012-11-16T11:09:15.697 回答