首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >观察通知

观察通知
EN

Stack Overflow用户
提问于 2017-01-06 10:08:40
回答 3查看 118关注 0票数 0

当应用程序到达前台状态时,我正在发布通知,我正在观察每个视图控制器中的通知。观察时的行为如何?哪个视图控制器将首先观察以及它如何工作?

让我给出一个场景:我已经启动了我的应用程序并完成了流程,现在我的应用程序将从第4 ViewController返回到前台状态。现在,哪个视图控制器将首先观察?

更多细节:当我尝试的时候,我得到了如下的日志

2017-01-06 20:54:04.384通知检查607:7636在第一次ViewController中观察到 2017-01-06 20:54:04.384通知检查607:7636在第一次ViewController中观察到 2017-01-06 20:54:04.384通知检查607:7636在第二次ViewController中观察到 2017-01-06 20:54:04.384通知检查607:7636在第一次ViewController中观察到 2017-01-06 20:54:04.385通知检查607:7636在第三次ViewController中观察到 2017-01-06 20:54:04.385通知检查607:7636在第一次ViewController中观察到 2017年-01-06 20:54:04.385通知检查607:7636在第四ViewController中观察到

这是如何发生的,是什么原因造成的?为什么在第一个视图控制器中多次观察通知?单击此处查看代码

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-11 14:41:08

根据此场景,将定义传递通知的顺序。

如果每个控制器中都有观察者,则按视图控制器的推送或显示顺序传递通知。

如果您删除每个视图控制器中的观察者,通知将只在应用程序进入后台状态的视图控制器中观察到。

票数 0
EN

Stack Overflow用户

发布于 2017-01-06 10:23:00

如果通知观察者是在UIViewController上添加到ViewDidLoad方法上的,则必须在ViewDidUnloadViewWillDisappear方法中从该UIViewController中移除通知观察者。如果不删除通知观察者,那么添加通知观察者的每个UIViewController都会接收通知事件。因此,移除通知观察者是一种很好的做法。类似地,尝试避免在同一个UIViewController上多次添加相同的通知观察者,否则UIViewController将多次收到通知。

票数 0
EN

Stack Overflow用户

发布于 2017-01-06 13:12:19

逻辑上,当添加通知并添加观察者时,如果视图控制器被移除,则删除通知。按照ViewController生命周期,在ViewDidUnload方法中删除。如果不删除,则每个视图控制器都将侦听通知,如果定义了,则启动事件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41503316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档