2016-01-22 15 views
0

可以说我有刚刚完成一个背景队列,并在年底会做在主线程上的一些东西:可以从后台队列调用iOS主线程操作中断方法调用吗?

-(void) backgroundThreadFunction { 
    //Some stuff on background thread. 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self doSomeNetworkStuff]; 
    }); 
} 

允许在主线程中说,已经有正在运行的方法:

-(void)myMainMethod{ 
    //Running some tasks. 
} 

在允许doSomeNetworkStuff()运行之前,iOS是否等到myMainMethod完成?还是它允许它打断?

回答

3

不,它不能中断。行dispatch_async(dispatch_get_main_queue(), ^{将该块添加到主队列中。当前方法已经在主队列上运行。

这就像在银行与一个出纳员排队。人们排队等待轮到他们。当前客户不会被下一个在线的人打断(让我们假设这是一个礼貌的线)。

一旦myMainMethod(当前客户)完成(以及调用它的方法完成等),然后处理队列中的下一个块(下一个客户)。

相关问题