【发布时间】:2012-04-24 21:43:46
【问题描述】:
我有一个状态驱动的类,它根据发生的情况改变状态。该类有一个 state 属性,该属性从许多地方被调用,这些地方以各种方法散布在整个代码中。
因此,发现状态更改逻辑是什么并不容易/显而易见,因此我正在考虑将状态更改集中在一个专用方法中,类似于以下伪代码的内容
- (void) updateState: (Param) action
{
switch (self.currentState)
case: EStateA:
if (action == connectionSuccesful)
self.currentState = EStateB;
else
self.currentState = EStateC;
break;
}
- (void) delegateCallbackConnectionSuccess
{
[self updateState: Param];
}
所以 updateState 方法需要知道发生了什么动作才能改变状态,一个动作被封装为一个方法,因此 updateState 方法需要知道调用它的方法是什么。
所以我的问题是如何最好地实现这一点,Param 应该是什么类型? 有什么选择? SEL、@selector、NSInvocation、其他东西?
TIA
(实现一个完整的状态模式似乎有点矫枉过正,除非它在 iOS 中很容易)
【问题讨论】:
标签: ios