0

我的应用程序中有一个我真的不明白的问题。当用户想要离线使用他们最喜欢的歌曲时,我有一些歌曲要在我的应用程序中下载。当使用NSURLConnection(即使使用commonRunLoopMode)启动下载时,我的应用程序开始变得非常慢,我什至无法滚动 tableView 而不会遇到冻结。

为什么像下载数据这样简单的事情会让用户体验如此糟糕?

4

1 回答 1

0

听起来您的下载代码在主线程上运行。此线程应仅用于短任务和用户界面操作。这是因为用户界面正在此线程上运行,因此该线程上任何长时间运行的进程基本上都会阻塞用户界面。这是一个相当长的话题,但请阅读以下内容:

http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091

和这个:

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

Grand Central Dispatch 将允许您将任何长时间运行的进程放入调度队列中,以便在后台线程上异步处理。

于 2013-07-26T15:55:01.390 回答