時間分析器顯示我的應用中最耗時的操作是從nib文件加載UITableViewCells
。其中最昂貴的是使用4KB圖像加載UITableViewCell
。以編程方式創建UITableViewCell或從筆尖加載UITableViewCell更快嗎?
我加載從筆尖UITableViewCell
用下面的代碼:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
有沒有人比編程方式創建一個視圖或從筆尖加載UITableViewCell
之間的區別?
編輯:
我比較了從一個筆尖加載UITableViewCell
反覆運行的時間配置文件,並以編程方式創建視圖。我的測試涉及在3-5秒的範圍內交替兩次UITableViews
約10次。在每次測試中,以編程方式加載UITableViewCell
的速度要快得多,速度要快兩倍到六倍。
任何人都可以證實這些結果嗎?
編輯: 我更新了筆尖加載代碼,只加載一次筆尖文件,並使用緩存版本進行後續調用。
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
的平均運行時間約爲90毫秒,而以編程方式創建UITableViewCell
的平均運行時間爲50毫秒。
向我們展示您的筆尖加載代碼。 –
感謝您看看@robmayoff。我更新了問題以包含加載筆尖的代碼。 – Eytan
有趣的發現 - 你將能夠使用故事板和原型單元再次運行實驗,其中表視圖在後臺加載所有的筆尖嗎? – jrturton