您当前的位置: 首页 >  ui

CoreData应用UI活动指示器不显示的解决

发布时间:2017-01-06 08:23:52 ,浏览量:0

一只简单的CoreData应用,UI界面左上角按钮触发一段耗时的代码,App本意是在执行耗时代码时将按钮暂时变为一个活动指示器,等到代码运行完毕再恢复原来的按钮.但是App运行时活动指示器从未显示过!

这是一个典型的主线程阻塞的情况,因为添加活动指示器是一个UI操作,所以它会被耗时操作阻塞,它会被执行,但没有效果(或者说结果未定义,在这里就是没有效果):

func handle(){
    navigationItem.leftBarButtonItem = activityIndicatorBarButtonItem()
//耗时的CoreData操作
self.navigationItem.leftBarButtonItem = self.exportBarButtonItem()
}

我们下意识的做法是将耗时操作放到非main队列中去,like this:

func handle(){
    navigationItem.leftBarButtonItem = activityIndicatorBarButtonItem()

    DispatchQueue.global().async {
        //耗时的CoreData操作
        DispatchQueue
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0802s