主线程阻塞问题

2018-10-23  本文已影响0人  愤怒小鸟飞呀飞

问题

主线程阻塞会导致新添加在父视图的view不能及时显示。

如下代码:

-(void)saveButtonAction:(UIButton *)button
{
[SVProgressHUD showWithStatus:@"保存中。。。" maskType:SVProgressHUDMaskTypeClear];
int m = 0 ;
while (m < 100)
{
m++ ;
NSLog(@"test");
}
}
上述代码中,SVProgressHUD 将不会显示,直到 saveButtonAction 方法执行结束

解决办法
使用GCD异步执行,把需要执行的耗时操作,通过串行队列的方式添加到主线程队列,让主线程有时间的时候在执行
如下代码:

-(void)saveButtonAction:(UIButton *)button
{
[SVProgressHUD showWithStatus:@"保存中。。。" maskType:SVProgressHUDMaskTypeClear];
dispatch_async(dispatch_get_main_queue(), ^{
UIImage *image = [self getCapture];
[self saveImageToPhotos:image];
});
}

// 指定回调方法

上一篇下一篇

猜你喜欢

热点阅读