曾遇到几次,这次记录在这里以免忘记。
因为MBProgressHUD的显示是UI操作,比起非UI操作要慢,所以即使使用普通的dispatch_async方式也可能一闪而过甚至完全看不见。
解决办法:使用dispatch_async + dispatch_after组合方式
// 这里调用显示hud的语句
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.2* NSEC_PER_SEC);
// 上句0.2是秒数,即0.2秒(足够长,以便第1句的显示hud完成),具体多少可自行修改
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// 耗费时长的操作
// 隐藏hud的显示,如果上句是url请求,则在connectionDidFinishLoading的方法中隐藏hud显示
});
});