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阻塞主线程的主要内容,如果未能解决你的问题,请参考以下文章

iOS中RunLoop和线程的关系

利用runLoop加载高清大图

iOS 常驻线程

Runloop线程常驻

Runloop线程常驻

Runloop线程常驻