iphone - 为什么NSURLConnection connectionDidFinishLoading没有运行?

时间:2010-10-28 11:14:39

标签: iphone uiscrollview nsurlconnection

我的应用看起来像这样:

我有一个UIScrollView,里面有imageview。我实现了scrollViewDidScroll委托,这样如果滚动滚动,我将创建一个NSURLConnection并从一些网址下载一个数据,只有一次。

问题是NSURLConnection connectionDidFinishLoading仅在我在滚动视图上释放手指后才被调用或运行。

更清楚一点,如果我用手指滚动滚动视图,我确认创建了NSURLConnection,但只要我不释放滚动视图,就不会调用connectionDidFinishLoading。一旦我松开手指,就会调用connectionDidFinishLoading的委托。

任何人都可以向我解释一下吗?

由于

1 个答案:

答案 0 :(得分:3)

这是因为在滚动期间,UI进入模态循环处理用户滚动输入,直到滚动结束,您的线程将不会返回到消息队列以从NSURLConnection中获取任何委托消息。

你可以在一个单独的线程中运行NSURLConnection,它应该在用户滚动时保持消息,但是你仍然无法调用UI线程。可能是让连接线程将数据写入UI线程可以读取的无锁数据结构的方式 - 但这可能很复杂!