美文网首页
使用MBProgressHUD 不能立刻显示出来,到下个界面才显

使用MBProgressHUD 不能立刻显示出来,到下个界面才显

作者: WSGNSLog | 来源:发表于2016-11-03 12:39 被阅读317次

    记录今天开发使用MBProgressHUD遇到的一个小坑:

    在push到下一个界面前做了一些耗时操作,结果用[MBProgressHUD show]时show不出来,到下一个界面才会出现转圈。

    - (void)showHUD{
        [MBProgressHUD show];
    }
    

    pragma mark - 下一步

    先记录一下错误的写法
    - (void)nextStepClcik
    {
    //dispatch_async(dispatch_get_main_queue(), ^{
    // [MBProgressHUD show];
    //});//这样不管用
    [self performSelectorInBackground:@selector(showHUD) withObject:nil];

      for (int i=0; i<100000; i++) {
        //耗时操作
      }
    
      [MBProgressHUD hideHUD];
       NextController *next= [[NextController alloc]init];
       [self.navigationController pushViewController: next animated:YES];
    
    }
    

    这样写进入下个界面载返回上一个界面时崩溃报错:

    This application is modifying the autolayout engine from a background
    thread, which can lead to engine corruption and weird crashes.  This 
    will cause an exception in a future release.
    此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃。 这将导致在将来版本中的异常。
    

    最后用GCD解决的:

    [self showHUD];
     dispatch_async(dispatch_get_global_queue(0, 0), ^{
         for (int i=0; i<100000; i++) {
          //耗时操作
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            
            [MBProgressHUD hideHUD];
            NextController *next= [[NextController alloc]init];
       [self.navigationController pushViewController: next animated:YES];
        });
    });
    

    参考:http://blog.csdn.net/tzshlyt/article/details/51880484

    相关文章

      网友评论

          本文标题:使用MBProgressHUD 不能立刻显示出来,到下个界面才显

          本文链接:https://www.haomeiwen.com/subject/qwwbuttx.html