国家变化监测

时间:2013-05-17 21:38:02

标签: objective-c cocoa state observers

我想知道是否有任何Apple Xcode API用于在我尝试构建自己的状态之前监视状态更改。我工作的应用程序更改了几个视图控制器。每个控制器都可以有一些较小的自定义视图以及常用的复选框,文本字段等。

主应用程序需要知道视图控制器或其上的任何内容是否在其再次保存之前被拉起时从其先前的状态进行编辑。我们只需要知道国家是否已经改变。需要注意的是:如果用户选中了一个复选框,这被视为状态更改,但如果用户也取消选中该复选框,则状态不会更改。

我正在看NSUndoManager,但我不确定它是否会起作用。 任何建议赞赏

1 个答案:

答案 0 :(得分:1)

有几种方法:

  1. 实施集中的“模型”对象。在这种情况下,视图控制器只会更新此主模型对象的属性,您无需做其他事情。然后,视图控制器将在viewDidAppear中检查此模型对象的状态,并查看是否有任何更改并采取相应措施。

  2. 另一种方法是实现delegate-protocol pattern,通过该方法,各种控制器可能具有一些delegate属性,该属性将指示必须通知哪些对象的数据更改。这个将成为数据委托的对象将被定义为符合一些明确定义的协议,该协议指示如何通知变更。

  3. 但是,如果你(a)有多个对象需要被告知变化;和/或(b)这些更改可能在呈现视图时异步发生,您需要一些机制来执行此通知。两种常见方法可以是key-value-observing该模型对象,也可以是posting a custom notification NSNotificationCenter

  4. 为了更好地为您提供建议,我们需要更好地了解模型对象的性质,更新是否在后台异步发生等等。