试图找出设计此类功能的最佳方法是什么?基本上我发送一个异步NSURLConnection,它会命中一个发回一堆数据的服务器。一旦我得到数据,我必须对它执行一些相当昂贵的工作,我宁愿在bg线程中做以防止UI锁定。最后,当接收和处理来自服务器的响应时,我还需要动态地进行适当的更新。
我的问题是我将如何在后台线程中执行该工作 as 数据到达,以便表格不会等到所有数据加载后再更新?
这是我到目前为止的伪代码。在我的ViewController中,我将有两个BOOL标志newDataReceived和dataFinishedDownloading。我还有两个变量,一个包含当前数据的字符串和一个保存处理数据结果的nsarray。然后,
还将在didReceiveData中设置newDataReceived标志:以及接收的实际数据。最后在didFinishLoading中,我将设置dataFinishedLoading标志以表示已加载所有数据。
我计划在#2-4中使用NSLock,检查状态标志以及获取和设置接收到的数据字符串和结果nsarray。
我确定有很多方法可以做同样的事情,但这看起来是一个好方法吗?
THX
答案 0 :(得分:1)
你可以看看NSOperation和NSOperationQueue。 NSOperation是在后台进行繁重计算和操作的完美替代方案。如果你需要不断更新tableview,你可以在你的Operation中实现一些协议来处理tableview的回调。
答案 1 :(得分:0)
使用performSelectorOn ...方法可以实现您想要做的事情。看看这个:http://arstechnica.com/civis/viewtopic.php?f=20&t=49035
请记住,UI更新应该在主线程中完成(因此使用performSelectorOnMainThread进行UI更新)。