【问题标题】:Where should I put my finite state machine in Objective C?我应该把我的有限状态机放在 Objective C 的什么地方?
【发布时间】:2014-05-05 16:05:24
【问题描述】:

我有一个 MKAnnotationView,可以根据我的应用程序中的各种情况更改其图像。

我正在构建一个有限状态机来定义这些状态中的每一个并解释导致它们发生的事件。

我正在考虑在 MKAnnotationView 的子类中构建我的状态机,我只分配给用户位置注释,然后根据事件向它发送消息。

这是个好主意吗?或者我的状态机应该是单例的,有点悬停并与对象本身分开?

谢谢

【问题讨论】:

  • 有哪些活动?有什么知识?拥有地图(和注释)的视图控制器?
  • @Wain 知识/事件在 MapViewController 和 LocationController 对象中,该对象具有我的位置管理器并检查用户位置的准确性。
  • 如果 FSM 在设计上是通用的,我会将其设为通用类/类组,对任何其他 API 集没有特定的“亲和力”。

标签: ios objective-c model-view-controller state-machine


【解决方案1】:

除非机器的状态应该在多个视图上的多个注释中保持一致,否则我不会使用单例。

我通常会考虑将所有权授予拥有注释的视图控制器。视图控制器订阅所有事件并更新状态机,然后将状态机结果应用于注解。

【讨论】:

  • +1 确实。在状态机中使用委托模式就像是面包和黄油。
  • @JodyHagins 太好了!打算这样做。关于使用 FSM 和委托模式的任何建议/提示和技巧?
  • 创建一个协议,该协议具有用于状态更改的委托回调方法。将委托属性添加到您的 FSM。然后,在您的 FSM 中,使用熟悉的“Will/Did”模式为每个状态更改调用委托。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多