iphone - 如何防止应用程序在下载数据时阻止

时间:2012-03-01 16:16:22

标签: iphone multithreading xmpp

我正在使用XMPPframework开发应用程序。当我下载用户的vCards(图片,名称等)时,应用程序会阻止,直到它下载了当时连接的所有人的数据。

我需要它在第二个线程中(我还没有使用过mutithreading),以便应用程序对新的触摸有所反应,并在下载数据时显示一个Activity图标。

我听说过Grand Central Dispatch(GCD),但我也听说过其他方式,你会推荐哪一种?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用类似的东西在第二个线程上工作。

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
  });
});

如果您要做的只是在第二个线程中下载vCard数据并将结果分配给变量,则不需要第二次调用dispatch_async(),因为您没有对UI元素执行任何操作。