注册NSNotifications的所有视图控制器

时间:2012-03-13 10:07:24

标签: objective-c ios

我有一个自定义图形,可在事件发生时显示给用户。图形需要显示在当前向用户显示的任何viewController上。

到目前为止我编程的方式是添加到所有viewcontrtollers: 1)自定义图形类的.h文件 2)被提出的NSNotification事件的观察者 3)实际绘制图形的方法。

这不是一种非常有效的做事方式,我想知道是否有人有更好的做事方式?

3 个答案:

答案 0 :(得分:1)

对我而言,听起来你已经以一种相当理智的方式完成了它。我能想到的唯一另一种方法是将图形添加到窗口,然后将其覆盖在当前视图控制器上,您只需要有一个对象监听通知。例如,您可以使用应用程序委托。但是当您在顶部添加图形时,您将不得不担心自己旋转屏幕。

答案 1 :(得分:1)

你正在做的是正确的..你唯一可以改进的是将绘图图形部分用于自定义图形类..(如果你还没有这样做......

只需将UIViewController变量设为member variable的{​​{1}},然后在收到graphics class后将其设置为显示当前视图。 。这个类本身会根据你设置的notifications来绘制代码

答案 2 :(得分:1)

它感觉不高效的原因是你复制了很多代码。这在一开始就是更多的工作,它会造成维护问题。您应该利用内置于面向对象语言的继承,包括Objective-C。

如果您希望所有视图控制器共享某些行为,请在公共超类中实现该行为。从该超类派生所有其他视图控制器,它们将自动获得所需的行为。您的超类的初始化程序可以负责为您关注的通知注册视图控制器,-dealloc可以取消注册它。这样,您就不必使用相同的重复代码来混淆每个视图控制器,如果您想要更改代码,则只需在一个地方进行。