小编Mar*_*one的帖子

用于管理观察者的Objective-C设计模式

在我的应用程序中,我有一个对象,它通过HTTP封装了与服务器的通信.如果服务器上有更改,此对象会使某些HTTP请求"轮询",例如会话不再有效,或者用户有新消息,等等.

应用程序的UI对象必须将自身注册到通信对象,以通过UI对象实现的协议接收通知.注册是通过以下方法完成的:

[communicationObject addObserver: self];
Run Code Online (Sandbox Code Playgroud)

并删除自己:

[communicationObject removeObserver: self];
Run Code Online (Sandbox Code Playgroud)

通信对象将观察者存储在可变数组中.在某些情况下,UI对象是在UINavigationController中推送的UIViewControllers.在这种情况下,当用户返回到父控制器时,UI控制器没有被丢弃,因为通信对象的观察者数组保留它,并且UI控制器不能从观察者中移除自己,因为从不调用dealloc方法(明显).

问题是:这个观察者 - 通知器是一个糟糕的设计模式?有一种方法可以检测到父控制器是否释放了UI控制器,而不使用viewWillDisappear方法?最好的做法是解决这类情况?

design-patterns objective-c ios

9
推荐指数
1
解决办法
3275
查看次数

标签 统计

design-patterns ×1

ios ×1

objective-c ×1