我正在开发一个应用程序,它将本机联系人上传到服务器,然后获取响应(JSON,一个已安装该应用程序的联系人列表)。当本地联系人数量足够大时,服务器响应速度会很慢并且不稳定。用户不能做其他事情。所以我把网络请求放入后台线程。每次我将上传100个联系人,完成一些任务,然后再接下100个联系人,直到完成循环。为什么我的后台工作线程阻塞UI线程?
但是在运行中,结果并不如预期。后台线程正在运行,它保持请求服务器。 UI线程被阻塞,我仍然无能为力。
这是在后台线程中导致长循环吗?虽然我有2个线程,但他们会竞争CPU资源(测试设备是iPod,1个核心,而我认为这可能与核心数量无关)?
任何人都可以告诉我如何处理这种情况的提示?提前致谢!
更新:
我找到了根本原因。 App委托中的全局变量被设置为错误值,因此UI行为很奇怪。我通过评论所有网络请求方法发现了这个。所以这个问题与多线程无关。对不起,麻烦了。
您使用的是GCD吗? – CodaFi
@CodaFi 不,我在应用程序委托中使用NSOperationQueue。 100个联系人的每个请求都会被放入队列中。 – LetBulletFlies
我想更好的问题是:你可以使用GCD吗?或者你需要瞄准iOS 3.x? – CodaFi