2013-05-08 53 views
1

我必須下載並解析巨大的XML文件。下載數據發生在NSOperation中,一旦下載完成,NSOperation也會觸發NSXMLParser。NSOperation內的NSXMLParser

現在,由於我想讓用戶隨時取消整個過程,我添加了一個取消按鈕,它會停止下載並取消操作。

現在我的問題是:即使我的NSOperation在後臺運行,當NSXMLParser開始分析時,UI會被完全阻塞。所以觸摸取消按鈕是毫無意義的。

這是怎麼發生的?因爲我從NSOperation內部觸發解析器(完成下載後),我認爲解析也應該在後臺執行?!

!!!編輯!:我做了一個測試。我檢查瞭解析器運行的線程。這是主線。這怎麼會發生? NSOperation在後臺線程上啓動,解析器如何在主線程上運行?我該如何避免這種情況?

回答

1

解決了它。問題在於NSURLConnection顯然在主線程上調用它的委託,導致在主線程上也執行以下每個方法調用。

所以我不得不明確地把我的方法調用再次到背景。

+0

儘快選擇他作爲答案 – 2013-05-08 12:31:05

+0

我很樂意,但我必須等待2天;) – 2013-05-08 12:42:00