iphone - 如何防止应用程序在下载数据时被阻止
问题描述:
我正在开发一个带有XMPPframework的应用程序。当我下载用户的电子名片(图片,名字等)时,该应用会阻塞,直到它下载了当时连接的所有人的数据。iphone - 如何防止应用程序在下载数据时被阻止
我需要在第二个线程(我还没有使用过多线程),以便应用程序能够响应新的触摸并在数据下载时显示活动图标。
我听说过Grand Central Dispatch(GCD),但我也听说过其他方法,你会推荐哪一种?
谢谢。
答
你可以在第二个线程上做这样的事情。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
/* your code to download the vCards goes here */
/* if you are explicitly updating a UI element then you would have to perform that on the main thread so you would do something like this */
dispatch_async(dispatch_get_main_queue(), ^{
label.text = @"some text"; // or any other code that updates a UI element
});
});
如果你想要做的就是下载电子名片数据在第二线程和分配结果的变量那么就没有必要再次调用dispatch_async(),因为你不执行任何操作在UI元素上。
我想说,如果你是从头开始写作,那么没有任何理由比其他任何东西都比GCD。它很好地与网络上的很多示例结合在一起。 – 2012-03-01 16:19:23