模型与视图控制器进行通信的推荐方式是什么?

| 例如,我有一个模型类,可以处理从其他iPhone接收蓝牙消息的情况。当我收到这些消息之一时,我需要更新视图。我相信这样做的标准方法是通过视图控制器。视图控制器具有对模型和视图的引用,因此可以与它们进行通信。 但是,他们应该如何将消息发送回VC?它们每个都可以引用视图控制器(作为属性,但不保留assign)。那是不好的做法吗(如果我没记错的话,是循环引用)吗? 是否有其他替代方法?我已经考虑了委托模式,但是要编写一个完整的委托,对于一个简单的问题,所有工作似乎都很多。 另外,如果您认为我对此考虑过多,请随时告诉我! [我认为这个问题以前可能已经出现过,这似乎很普遍,但是我搜索了一下却没发现太多] 谢谢你的帮助,     
已邀请:
        通常,您有3种不同的技术: 代表团 KVO(关键值观察) 通知事项 如果您的模型仅需要将更改通知一个对象(您的视图控制器),则委派是可行的方法。创建新接口,将委托属性添加到模型等可能需要额外的工作,但是就灵活性,代码重用,设计等方面而言,绝对值得这样做。委托是Cocoa编程中的标准模式,在Apple的API中广泛使用。 如果您的模型需要通知多个对象更改,则要使用KVO或通知。使用KVO,您可以预订模型上特定属性或键的更改事件。例如,当模型上的\ messages \'属性更改时,任何附加的侦听器都可以收到更改通知,并做出相应的响应。 当您要将应用程序范围的消息发送到多个侦听器时,将使用通知。标准API的示例包括键盘通知(显示/关闭键盘时)以及界面方向更改。 因此,在您的情况下,委派或KVO可能是最佳选择。     
        从来没有在iOS应用程序中执行过此操作,但是一般来说,用mvc术语来说,直接从模型中更新视图有时会更好(并使代码更简洁)。我认为这很好,但是将模型与视图耦合在一起是很糟糕的。因此,要解决此问题,您应该实现观察者(广播-接收)设计模式(或使用内置的ios事件广播器/接收器系统-> NSNotificationCenter)。这样,当发生某种事情改变了模型时,无论是否有人听那个事件,模型都会广播一个偶数,这不再是问题,因此,您可以将视图与模型分离。     

要回复问题请先登录注册