“[NSNotificationCenter defaultCenter] addObserver” 最佳的放置位置在哪里?

3

我习惯在init方法中使用"[NSNotificationCenter defaultCenter] addObserver"。我也看到很多人在viewDidLoad中使用。这方面有什么指导或最佳实践吗?


2
将其用于需要的地方。一般来说,如果您的视图(控制器)不可见,则不应该监听来自其他对象的事件。 - Richard J. Ross III
4
我更喜欢在init中执行并在dealloc中删除观察者。在我们的情况下,即使视图没有显示,我们也希望我们的viewControllers能够收到特定事件的通知,因此当视图显示时,数据已经存在。 - EricS
1
我认为最好在 viewDidLoad 中添加观察者,在 viewDidDisappear 中移除观察者。 - Hossam Ghareeb
@EricS 通过将其放在类初始化器中,您如何处理在视图加载之前触发和接收通知的问题,在这种情况下,您可能需要更新UI? - Camsoft
我们检查viewController.isViewLoaded以查看视图是否已加载。如果没有加载,我们只需将信息存储起来,等待其加载。 - EricS
2个回答

0

我会诚实地说,这并不是很重要。我的观点是最好在viewDidLoad中使用,但就像@EricS所说,如果你想在视图不显示时得到通知,那这并不完全适用。因此,它真的取决于你如何喜欢使用它以及你想在何时得到这些事件的通知。


0

有两个问题需要问自己:

  1. 在 UIViewController 初始化和其视图加载之间,是否可以触发此通知?

  2. 如果通知可以在这些事件之间触发,那么它对您的 UIViewController 状态是否有影响?

这些问题将指导您选择在哪个方法中调用 addObserver。除此之外,没有特定的“最佳实践”,只有这个:

只有在需要时才监听。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接