我必须下载并解析大量的XML文件。下载数据发生在NSOperation中,一旦下载完成,它也会触发NSXMLParser。
既然我想让用户随时取消整个过程,我添加了一个取消按钮,停止下载并取消操作。
现在我的问题是:即使我的NSOperation在后台运行,当NSXMLParser开始解析时,UI也会被完全阻止。因此触摸取消按钮毫无意义。
这怎么可能发生?由于我从NSOperation内部触发解析器(完成下载后),我认为解析也应该在后台执行?!
!!!编辑!!! :我做了一个测试。我检查了解析器运行的线程。这是主线程。怎么会发生这种情况? NSOperation是在后台线程上启动的,解析器如何在主线程上?我怎么能避免这个?
答案 0 :(得分:1)
解决了它。问题是NSURLConnection显然在主线程上调用它的委托,导致在主线程上也执行以下每个方法调用。
所以我只需要将我的方法调用再次显示在后台。