NSNotifications的发送表无缘无故清除。

时间:2014-02-12 13:12:41

标签: ios cocoa-touch nsnotification

我从我的外观类调度通知,它从我的viewcontrollers中隐藏了模型的复杂性。 现在,我在第一个选项卡上有一个带有导航控制器的简单tab barbartroller。到目前为止这么好,一个非常典型的设计。 现在这个导航控制器在其堆栈上有两个视图控制器。 带有tableview的根MainViewController和带有几个视图的DetailViewController。

mainViewController是viewDidLoad中4个通知的观察者。 每个通知我有四种处理方法。我在dealloc中取消注册这些通知。

问题是当我在mainViewController中选择tableViewCell并将detailViewController压入堆栈时,然后当我返回主视图控制器时按下后退按钮,此时mainViewController作为观察者被移除通知Dispatch表,实际上它就像取消注册这些通知一样。

为什么会这样?是设计还是我遗失了什么?

mainViewController的实例没有被销毁,它仍然存在于导航堆栈中,dealloc没有被调用,为什么要取消注册呢?

快速而肮脏的解决方案是将注册通知给viewWillAppear,但我不喜欢它,因为这个注册代码多次运行不必要(viewDidLoad就足够了。)

任何帮助?

1 个答案:

答案 0 :(得分:0)

[这是一个倾斜的答案,道歉。]

我猜你对标准的Apple做事方式不满意,并试图找到更好的东西。如果是这样的话,你并不孤单。

如果您不了解这些,可能需要查看"Model View ViewModel"概念,ReactiveCocoaReactiveViewModel。 ReactiveCocoa可以是一个陡峭的概念悬崖,但如果你已经冒险,那值得一试。