2010-09-25 106 views
1

我有一個每3秒刷新一次的UITableView。我只有在我的布爾變量爲true時才重新加載它。在某些情況下,變量始終爲真,時間表難以滾動。 (表現不是很好)。其他時候它確定。我該怎麼辦?注意:我已經根據蘋果推薦的方式(UITableView最佳實踐)編碼了我的表格,除了向UITableViewCell添加子視圖,而不是繪製它,我對其他技術很有信心。UITableView滾動問題

這是什麼解決方案?

回答

2

您確定因爲刷新了很多而難以滾動。這裏提到了什麼樣的令人耳目一新的功能,從網絡刷新數據或刷新表格查看您的手機。

每次刷新表格視圖或滾動表格視圖時,表格視圖都會一直詢問相應的單元格,現在整個性能取決於您返回單元格的速度。

如果您正在執行自定義UITableViewCell,則存在性能降低的風險。仔細檢查這些東西:

  • 您是否正確使用了您的單元格?檢查[tableView dequeueReusableCellWithIdentifier:]是否總是返回零。如果它總是返回零,那麼你做錯了。

  • 檢查是否通過使用多線程從網絡或文件加載圖像(如果是)來阻止主線程。

  • 後您檢查一切,仍然有一個緩慢的表現,那麼您可能需要減少返回一個細胞的倍(以較少刷新)或繪製自己

+0

是的,我從套接字連接流數據並刷新我的表數據。 (使用[表reladData];我通過測量儀器的性能它不顯示存儲器滾動時生長和無泄漏有 1.應答是YES 2.我的應用程序的應用程序是一個mutithreaded。應用程序,我更新了主線程上的其他視圖的UI(使用performSelectorOnMainThread)。這可能是原因嗎? – 2010-09-25 14:29:48

+0

內存泄漏通常對性能沒什麼大不了(即使它可能導致崩潰)你的意思是其他視圖的UI ?它是你的表格視圖單元UI還是其他UI?通常,滾動需要大量的CPU處理,以便儘可能快地儘可能快地返回單元格以儘量不要使用主線程 – vodkhang 2010-09-25 14:33:28

+0

b即使在這種情況下,如果添加許多子視圖(特別是圖像),性能可能仍然很低,那麼除繪製單元格外,您沒有其他選擇 – vodkhang 2010-09-25 14:36:33

0

如果您獲取大量的細胞爲UITableView設置數據,嘗試根據需要獲取數據。獲取cellForRowAtIndexPath中每個單元格的數據,而不是獲取表格視圖和存儲的所有數據。