CFRunLoopRunInMode在IOS中冻结

时间:2011-12-15 17:46:13

标签: iphone ios ipad

您好我UITableView冻结了一个问题,

" downloadItem"当有人点击iPad上的按钮时,下面会被调用。它应该下载一个文件,然后返回。

在下载期间,虽然卡在该功能中,但我希望UI仍然具有响应能力,因此我安装了如下的runloop。

实际的downloadItem函数比下面显示的更复杂,但显示的是它的基本概念。我知道这不是最好的方法,但由于其他原因,我现在无法改变它,特别是由于实际功能的复杂性。

问题是我在屏幕上也有UITableView(以及按钮),如果在此函数中点击或滚动UITableView,则在runloop中UITableView UITableView 1}}有时会冻结,并在退出此功能后仍然保持冻结状态。这种情况每次都不会发生,可能是40%的时间。

有谁知道如何修复,下面的RunLoop调用是否正确?为什么当我在下面的runloop中点击-(IBAction) downloadItem { BOOL downloading=TRUE; callFunctionsToStartdownload(...); while (downloading) { downloading=DownloadSomeBytes(...); CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES); } } 时,桌子有时会冻结?

{{1}}

感谢

1 个答案:

答案 0 :(得分:0)

一般来说,这似乎没必要。您希望下载的字节的处理位于一个线程中(这不会解决),但实际的异步NSURLConnection应该在一个线程中完成它的工作(然后回调到启动它的线程) )。