dic*_*oce 1 iphone variables multithreading conditional-statements
我是Objective C和Mac开发的新手......似乎我可以在我的应用程序中使用Posix线程API ..这是推荐的方法吗?或者他们应该使用的一些Apple API用于互斥,条件变量和线程?
我应该补充一点,我正在为iPhone开发.
我想准确添加我想要做的事情.基本上,CoreLocation是异步的...你告诉它开始更新你,然后它只是定期调用你的更新方法...
我遇到的问题是我需要另一个线程来阻止,直到发生更新...如何进行主应用程序线程阻塞,直到至少发生一次CoreLocation更新?他们的NSConditionVariable?:)
我建议更容易陷入线程的方法是使用以下调用:
[self performSelectorInBackground:(@selector(myMethod)) withObject:nil];
Run Code Online (Sandbox Code Playgroud)
这将自动创建一个新的后台线程供您运行.顺便提一下,请确保在后台方法中执行以下操作:
-(void) myMethod {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// code you want to run in background thread;
[pool drain];
}
Run Code Online (Sandbox Code Playgroud)
这是必要的,因为没有为除主要线程之外的任何线程设置默认自动释放池.
最后,谈到阻塞主线程,您可以使用后台线程中的以下内容来执行此操作:
[self performSelectorOnMainThread:(@selector(myOtherMethod)) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)
如果您希望这样做,可选的第三个参数将为您保留主线程.
希望有所帮助!