iOS 利用runloop阻塞主线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 利用runloop阻塞主线程相关的知识,希望对你有一定的参考价值。
参考技术A 举例:我有三个方法需要依次执行 testLogOne testLogTwo testLogThree ,但是方法二 testLogTwo 中是有 block 或者是 block 中有返回值的 ,方法三 testLogThree 需要等待方法二的 block 回调完成后才能执行。控制台输出
使用信号量 dispatch_semaphore_t 会直接卡死主线程,永远等待不到信号的的接收。
使用 dispatch_group_t 也可以将方法三 testLogThree ,放到 dispatch_group_notify 中执行,但是,考虑到实际情况下,其他方法可能要比方法三 testLogThree 先执行,所有也放弃了此用法的考虑。虽然可以将方法三 testLogThree 放到 block 中,但是如果有其他特殊情况,例如 for循环 ,这样也是不可取的。
控制台输出
运行 runLoop 一次,阻塞当前线程以等待处理。根据条件进行 while循环 ,达到条件后 runloop 退出
控制台输出:
ios开发-阻塞主线程
IOS 等待条件满足再向下执行但不主卡线程NSRunLoop
以上是关于iOS 利用runloop阻塞主线程的主要内容,如果未能解决你的问题,请参考以下文章