【问题标题】:iphone - Why the NSURLConnection connectionDidFinishLoading is not running?iphone - 为什么 NSURLConnection connectionDidFinishLoading 没有运行?
【发布时间】:2010-10-28 11:14:38
【问题描述】:

我的应用如下所示:

我有一个 UIScrollView,里面有 imageview。我实现了 scrollViewDidScroll 委托,因此如果滚动确实滚动,我将创建一个 NSURLConnection 并从某个 url 下载数据,仅一次。

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

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

谁能给我解释一下?

谢谢

【问题讨论】:

  • 您好,您能否发布一些代码以更好地了解问题?

标签: iphone uiscrollview nsurlconnection


【解决方案1】:

这是因为在滚动期间,UI 进入了一个处理用户滚动输入的模式循环,并且在滚动完成之前,您的线程不会返回消息队列以从 NSURLConnection 中获取任何委托消息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多