应用程序没有响应
Posted
技术标签:
【中文标题】应用程序没有响应【英文标题】:Application does not respond 【发布时间】:2014-02-28 07:43:48 【问题描述】:我有一种方法可以使用 lame 将 iTunes 上选定的歌曲编码为 mp3。现在我从名为“Encode”的 IBAction 中调用它。编码时,应用程序无法进入无响应状态。编码完成后,应用程序返回。 我想解决这个没有响应的状态。你能教我应该如何接近吗?
【问题讨论】:
【参考方案1】:我猜您正在主线程上进行编码,这就是您的应用程序变得无响应的原因。您可能需要阅读有关threading 和concurrency 的文章以解决您的问题。
raywenderlich.com 上也有介绍,叫"Multithreading and Grand Central Dispatch on ios for Beginners Tutorial"。
【讨论】:
感谢您的回答。有了你的回答,我就知道了异步处理,叫做 Operation Queue。【参考方案2】:您需要在不同于主线程的线程上调度它。否则它将阻塞应用程序的 GUI 部分运行的主线程。
这是一个如何做到这一点的例子。但是,如果要修改块外的变量,请小心。您可能需要查找 __block 关键字。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^
// INSERT CODE HERE
);
【讨论】:
感谢您的回答。我发现你的答案是 GCD。另一方面,我发现了使用操作队列的方式,使用 NSOperationQueue。如果你教我哪个更好,我将不胜感激。 现在我找到了问题的答案,gcd 或 NSOperation。这是网址:***.com/questions/10373331/… 我从未研究过 NSOperationQueue(我相信这是一个相当新的东西),但绝对在我的名单上。也许其他人可以提供帮助?以上是关于应用程序没有响应的主要内容,如果未能解决你的问题,请参考以下文章