iOS 收到通知的触发函数不一定运行在主线程

本文探讨了在多线程环境中通知是否能在不同线程间传递的问题。根据苹果官方文档,通知总是在发布通知的线程中传递,这意味着观察者接收到的通知必须与其注册时所在的线程一致。若涉及UI更新,则触发方法及通知发布均需在主线程执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天被问到一个问题,如果在子线程发通知,主线程能不能收到通知。

答:肯定收不到。为什么?因为线程间没有这样的通信机制。下面是苹果关于通知的官方文档:

In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself.(在多线程应用程序中,通知总是在通知发布的线程中传递,这可能与观察者注册的线程不相同。)

这段话的意思是说,注册观察者是一个线程,触发方法可能在另一个线程中执行,但是这个线程必须和发通知的线程一致。另外如果收到通知是为了刷新UI的话,那么这个触发方法必须放在主线程,发通知也必须放在主线程。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值