タイムプロファイラは、アプリで時間がかかる操作がnibファイルからUITableViewCells
をロードしていることを示しています。最も高価なのは、UITableViewCell
に4KBイメージをロードすることです。UITableViewCellをプログラムで作成するか、ペン先からロードする方が速いのですか?
私は次のコードでペン先からUITableViewCell
をロードしています:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
は、誰でもプログラムでビューを作成するか、ペン先からUITableViewCell
をロードするとの違いを比較していますか?
編集:
私は、ペン先からのUITableViewCell
の読み込みとプログラムによるビューの繰り返し実行の時間プロファイルを比較しました。私のテストでは、2つの間を交互に入れて、3〜5秒の間に約10回UITableViews
を実行しました。各テストでは、UITableViewCell
のプログラムによる読み込みは、2倍から6倍高速で大幅に高速でした。
誰でもこれらの結果を裏づけできますか?
EDIT: nibファイルを一度読み込み、その後の呼び出しでキャッシュバージョンを使用するように、nibローディングコードを更新しました。
if (self.UITableViewPortaitNib == nil) {
self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]];
}
self.UITableViewPortaitNib instantiateWithOwner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
私はまた、より一貫性の実行を作成するために、自動化機器を使用し、結果はまだロードUITableViewCells
をプログラムでペン先のためUITableViewCells
をロードするよりも高速であることを示唆しています。ペン先からのUITableViewCells
の平均実行時間は約90msでしたが、UITableViewCell
をプログラムで作成するための平均実行時間は50msでした。
あなたのペン先コードを教えてください。 –
見ていただきありがとうございます@robmayoff。ペン先をロードするためのコードを含めるように質問を更新しました。 – Eytan
興味深い発見 - ストーリーボードとプロトタイプのセルを使って実験をやり直すことができますか?テーブルビューではすべてのnibがバックグラウンドで読み込まれますか? – jrturton