我有一种方法可以使用lame将iTunes上选定的歌曲编码为mp3。现在我从名为“Encode”的IBAction中调用它。编码时,应用程序无法响应状态。编码完成后,应用程序返回。 我想解决这个没有回应的状态。你能告诉我我该怎么办?
答案 0 :(得分:3)
我猜你在主线程上进行编码,这就是你的应用程序没有响应的原因。您可能需要阅读有关threading和concurrency的文章才能解决您的问题。
在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
});