Mos*_*she 25 iphone multithreading nsthread ios
我有一个利用OpenEars和Flite库的应用程序.问题是Flite库是资源密集型的,它冻结了我的应用程序.我怀疑在后台线程上运行Flite会解决问题,但我不知道该怎么做.
也就是说,如何在iOS中实现后台线程?
如果有人能指出我的一些教程,分享一些示例代码或任何可以帮助我解决这个问题的一般建议,我将不胜感激.
zou*_*oul 45
Apple的" 并发编程指南"是一本很好的阅读材料.通过从Web上复制一些示例代码并进行黑客攻击直到您满意为止,并发编程并不是您想要的.了解保护自己免受麻烦的选择和原则是很好的.
一段时间后重新回答答案,现在使用Grand Central Dispatch几乎不会出错.在后台运行任务如下所示:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self doSomeLongTask]; // 1
dispatch_async(dispatch_get_main_queue(), ^{
[self longTaskDidFinish]; // 2
});
});
Run Code Online (Sandbox Code Playgroud)
长任务(1)将在某个后台线程上运行,并且没有我所知道的捕获,即.在该线程中已经存在自动释放池,您不必关心运行循环等.任务完成后-longTaskDidFinish,主线程(2)上的代码调用,以便您可以更新UI或其他任何内容.这是一种常用的习语.