UIAlertAction的handler block执行线程:可否省略切主线程的dispatch_async
UIAlertAction的handler执行线程权威界定疑问
项目场景
- 开发实现带交互按钮的
UIAlertController弹窗时,按钮绑定的handler block触发后需要更新UI,向用户反馈按钮点击状态。 - 开发人员为了保证UI更新逻辑在主线程执行,特意将handler内的UI相关代码用
dispatch_async包裹,分发到主队列执行。
评审分歧
- 代码评审阶段,评审人员提出这层
dispatch_async包裹属于冗余代码,但双方均未能找到可支撑该判断的权威引用依据。 - 当前可查到的苹果官方文档对handler的定义仅有如下说明:
handler:用户选择对应action时执行的代码块,该代码块无返回值,以被选中的action对象作为唯一入参
核心诉求
- 目前始终没有官方材料能够明确验证“
UIAlertAction的handler block必然在主线程执行”这一结论的正确性,在缺乏权威依据的前提下,开发团队倾向于保留现有dispatch_async逻辑,需要可对该问题做出明确界定的权威结论。
内容的提问来源于stack exchange,提问作者software evolved
相关产品推荐
相关产品推荐

