我有一個表格視圖,它是從一個抓取結果控制器填充的。我還使用NSTimer每分鐘進行一次API調用,以吸引所有要顯示的新數據。這發生在GCD和新的託管對象上下文異步使用,並使用mergeChangesFromContextDidSaveNotification在完成時將更改合併到主管理對象上下文中。這會觸發獲取的結果控制器委託方法,並且任何新行都將通過insertRowsAtIndexPaths插入表中。UITableView insertRowsAtIndexPaths導致應用程序無響應
這是所有預期的工作,但我看到UITableView endUpdates被調用和出現在表視圖中的新單元之間的5秒暫停。在這段暫停期間,應用程序不會響應任何觸摸事件(標籤欄,滾動表格視圖等)。
我對從哪裏開始調試這個問題有點困惑 - 單元配置都在endUpdates調用之前發生,而且似乎不需要很長時間。
該代碼相當複雜,但如果需要,我可以發佈它。
編輯:
這裏是從上下文每次通話的時間日誌提取物合併endUpdates被稱爲:
2011-05-22 15:29:47.119 myapp[4136:7c1b] got background save notification
2011-05-22 15:29:47.124 myapp[4136:7c1b] controllerWillChangeContent
2011-05-22 15:29:47.128 myapp[4136:7c1b] NSFetchedResultsChangeInsert
2011-05-22 15:29:47.132 myapp[4136:7c1b] controllerDidChangeContent
2011-05-22 15:29:47.138 myapp[4136:7c1b] numberOfSectionsInTableView called
2011-05-22 15:29:47.140 myapp[4136:7c1b] numberOfSectionsInTableView called
2011-05-22 15:29:47.144 myapp[4136:7c1b] numberOfRowsInSection called
2011-05-22 15:29:47.157 myapp[4136:7c1b] cellForRowAtIndexPath called
2011-05-22 15:29:47.195 myapp[4136:7c1b] cellForRowAtIndexPath returning configured cell
2011-05-22 15:29:47.212 myapp[4136:7c1b] endUpdates called
呀,我加記錄在每一步,一切都很快發生。我將用日誌摘錄更新原始問題。 – barrym 2011-05-22 14:33:05
你使用自定義單元格嗎? – 2011-05-22 14:37:03
嘗試使用時間分析器通過儀器運行您的應用程序,並檢查將出現的秒殺。 – 2011-05-22 14:37:25