在我的编码经验中,我第一次在目标C中处理线程。在我的应用程序中,我需要在两个线程中下载一些资产。下载完成后,我必须启动我的主线程,它将利用线程中下载的资产。所以我写了一些这样的代码
NSThread *threadPlayer1 = [[NSThread alloc]initWithTarget:self selector:@selector(getPlayer1Assets) object:nil];
[threadPlayer1 start];
NSThread *threadPlayer2 = [[NSThread alloc]initWithTarget:self selector:@selector(getPlayer2Assets) object:nil];
[threadPlayer2 start];
[self performSelectorOnMainThread:@selector(introducePlayer1) withObject:nil waitUntilDone:YES];
我将waituntilDone编写为Yes,但它等待直到第一个线程完成。 所以,如果我想等待,直到所有两个线程完成我该怎么办?任何人都可以建议使用示例代码段。
答案 0 :(得分:1)
我建议使用this。它来自Pulse Engeenering Blog。花一点时间,直到你掌握了这个想法。
至于你的代码。我猜你这样做了:
[self performSelectorOnMainThread:@selector(introducePlayer1) withObject:nil waitUntilDone:YES];
在主线程上。阅读documentation上的内容,特别是最后一句:
wait一个布尔值,指定当前线程是否阻塞直到 在主机上的接收器上执行指定的选择器之后 线。指定YES以阻止此线程;否则,指定NO 让这个方法立即返回。
如果当前线程也是主线程,则为其指定YES 此参数,消息将立即传递和处理。