申请没有回应

时间:2014-02-28 07:43:48

标签: objective-c cocoa

我有一种方法可以使用lame将iTunes上选定的歌曲编码为mp3。现在我从名为“Encode”的IBAction中调用它。编码时,应用程序无法响应状态。编码完成后,应用程序返回。 我想解决这个没有回应的状态。你能告诉我我该怎么办?

2 个答案:

答案 0 :(得分:3)

我猜你在主线程上进行编码,这就是你的应用程序没有响应的原因。您可能需要阅读有关threadingconcurrency的文章才能解决您的问题。

在raywenderlich.com上还有一个名为"Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial"的介绍。

答案 1 :(得分:1)

您需要在与主线程不同的线程上调度它。否则它将阻止运行应用程序GUI部分的主线程。

以下是如何操作的一个示例。但是,如果要修改块外的变量,请注意。您可能想要查找__block关键字。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

    // INSERT CODE HERE

});