Tom*_*m H 6 model-view-controller cocoa-touch loose-coupling ios
例如,我有一个模型类来处理从其他iPhone接收蓝牙消息.当我收到其中一条消息时,我需要更新视图.我相信这样做的标准方法是通过视图控制器.视图控制器具有对模型和视图的引用,因此可以与它们中的每一个进行通信.
但是他们应该如何将消息发送回VC呢?他们可以每个都有一个对视图控制器的引用(作为属性,赋值不保留).那是不好的做法(如果我没弄错它的循环参考)?
有没有其他方法可以做到这一点?我已经考虑了委托模式,但是要编写一个完整的委托,对于一个简单的问题,所有这些似乎都是很多工作.或者,如果您认为我在思考这个问题,请随时告诉我!
[我觉得这个问题可能在之前出现过,看起来很常见,但我搜索了一下,并没有发现太多]
谢谢你的帮助,
一般来说,你有3种不同的技术:
如果您的模型只需要通知一个对象(您的视图控制器)的更改,则委派是可行的方法.创建一个新接口,将委托属性添加到模型等可能感觉额外工作,但在灵活性,代码重用,设计等方面绝对值得.委托是Cocoa编程中的标准模式,并且广泛用于Apple的API.
如果您的模型需要通知多个更改对象,则需要使用KVO或通知.使用KVO,您可以订阅更改模型上特定属性或键的事件.例如,当模型上的"messages"属性发生更改时,可以向任何连接的侦听器通知更改并相应地做出响应.
如果要将应用程序范围的消息发送给多个侦听器,则使用通知.标准API的示例是键盘通知(当显示/关闭键盘时)和界面方向更改.
所以在你的情况下,代表团或KVO可能是最好的选择.
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |