美文网首页
主线程卡死

主线程卡死

作者: Smicro | 来源:发表于2016-06-16 16:13 被阅读762次

    场景:不知道为什么主线程卡住了,感觉整个流程没问题。不知道怎么找错误

    帮助:感激师傅的提点。

    方法:

    如果遇到主线程卡死,工程不会崩溃,只是主线程停滞(不知道处理什么,无法选择)。这时候程序依旧在运行。点击下面的暂停按钮:

    左边信息提示栏会出现线程的执行情况,你点击第一个用户线程看看是否问题出在这里:

    问题找到了:

    我把dispatch_async写成了同步的dispatch_sync。

    当前程序正在主线程执行,强行把其它操作推倒主线程中让它执行,可是它一次只能做一件事,这样就会导致他无法选择,也就是卡死了。如果使用dispatch_async的话,主线程会把当前的任务执行完,然后在处理推进去的操作。

    推荐写法:

    if([NSThread isMainThread]) {//judge the thread

    //what you want to do in main thread...

    } else {

    dispatch_async(...);

    }

    相关文章

      网友评论

          本文标题:主线程卡死

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