我正在编写一个应用程序,只要用户点击重新加载按钮,就需要从网站上获取内容。
如果他这样做,则NSOperation会被注册并交给NSOperationQueue。
当NSOperation启动(START QUEUE)时,它会检查其缓存并从服务器重新加载数据(CALL IMPORT1)。
执行此任务后,操作会向我的UITableView发送通知,该通知查询数据库(START READING / END READING)然后调用[self.tableView reloadData];
(RELOAD DATA START)
直到这里一切都按预期工作。即使我导入约1.000个元素。
让我疯狂的事情是,在“END QUEUE”和获得第一个单元格(CREATE CELL START)之间会有某种睡眠。在这个睡眠之后,细胞按原样产生 - 非常快。
我无法弄清楚是什么调用了这个“睡眠”。
任何人都可以给我一个暗示会出错的提示。
先谢谢鲍里斯
在viewDidAppear中调用
2011-01-29 15:54:34.460 [30488:207] 开始阅读2011-01-29 15:54:34.461 [30488:207]结束阅读
2011-01-29 15:54:34.464 [30488:207] RELOAD DATA START 2011-01-29 15:54:34.468 [30488:207]获取部分 2011-01-29 15:54:34.469 [30488:207] GET HEADER 2011-01-29 15:54:34.470 [30488:207] GET HEADER 2011-01-29 15:54:34.470 [30488:207] GET ROWS
2011-01-29 15:54:34.471 [30488:207] 创建CELL START 2011-01-29 15:54:34.473 [30488:207]创建细胞 STOP 2011-01-29 15:54:34.474 [30488:207]创建CELL START
2011-01-29 15:54:34.475 [30488:207] 创建细胞停止2011-01-29 15:54:34.476 [30488:207]创建细胞 START 2011-01-29 15:54:34.477 [30488:207]创建细胞停止
2011-01-29 15:54:34.477 [30488:207] GET HEADER
通过通知调用(由于NSOperation,粗体部分是新的)
2011-01-29 15:54:04.719 [30488:630b] START QUEUE 2011-01-29 15:54:05.727 [30488:630b] CALL IMPORT1 START
2011-01-29 15:54:05.750 [30488:630b] CALL IMPORT1 STOP 2011-01-29 15:54:05.760 [30488:630b] CALL VIEW 开始 2011-01-29 15:54:05.767 [30488:630b]开始阅读 2011-01-29 15:54:05.771 [30488:630b] 结束阅读2011-01-29 15:54:05.781 [30488:630b] RELOAD DATA START
2011-01-29 15:54:05.786 [30488:630b] 获取部分2011-01-29 15:54:05.791 [30488:630b] GET HEADER 2011-01-29 15:54:05.797 [30488:630b] GET HEADER
2011-01-29 15:54:05.802 [30488:630b] GET ROWS
2011-01-29 15:54:05.806 [30488:630b] CALL VIEW STOP 2011-01-29 15:54:05.811 [30488:630b] END QUEUE 2011-01-29 15:54:10.770 [30488:630b] 创建CELL START 2011-01-29 15:54:10.776 [30488:630b]创建细胞 STOP 2011-01-29 15:54:10.777 [30488:630b]创建CELL START
2011-01-29 15:54:10.778 [30488:630b] 创建细胞停止2011-01-29 15:54:10.778 [30488:630b]创建细胞 START 2011-01-29 15:54:10.780 [30488:630b]创建细胞停止
2011-01-29 15:54:10.781 [30488:630b] GET HEADER
答案 0 :(得分:0)
找到解决方案...... NSOperation将辅助线程上的NSNotification发送到我的UITableViewController - 这会导致延迟。
我在这个网站上找到了解决方案: http://cocoawithlove.com/2009/08/safe-threaded-design-and-inter-thread.html
希望这是我的帮助!