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