iOS面试:主线程如何进行阻塞?

前言:

今天在群里, 有个小伙伴问了一个问题, 他们和js交互的时候, 需要等待js的一个回调.

主线程调用一个网络请求, 然后要等网络请求的结果回来之后, 然后在return.

他说, 他们之前是根据runloop去回调添加监听解决的.说又引发了一些其他的问题, 问有没有人知道怎么做.

解决

我一直以为这应该是大部分都知道的, 直到他用runloop解决, 很多人都在群里讨论说没法实现, 我才意识到或许并不是那么简单.

方法一

如果你实在是不知道怎么解决, 那么就把return去掉换成block回调, 然后进行调用. 当然这可能会让你去重写一部分逻辑代码, 但是解决起来算是好用的.

方法二

就是在主线程做堵塞.那么问题来了

  • 主线程可不可以做阻塞?
  • 主线程调用async会不会开辟新线程?

主线程调用async会不会开辟新线程?

先说一个基础的async不管是同步队列, 还是异步队列, 调用async都会开辟线程, 但是区别是什么呢? 主线程async会吗?

在这里插入图片描述
建议先把图片放大, 自己思考一下会输出什么.

*
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值