【发布时间】:2014-05-23 06:22:02
【问题描述】:
我需要像这样的java代码在objective-c中实现状态机:
public enum State {
INITIAL {
@Override
State doSomething(String aParameter) {
System.out.println("Doing Something in INITIAL state and jumping to NEXT_STEP, argument = " + aParameter);
return NEXT_STEP;
}
},
NEXT_STEP {
@Override
State doSomething(String aParameter) {
System.out.println("Doing Something in NEXT_STEP and jumping into FINAL, argument = " + aParameter);
return FINAL;
}
},
FINAL {
@Override
State doSomething(String aParameter) {
System.out.println("I am in FINAL state, argument = " + aParameter);
return this;
}
};
abstract State doSomething(String aParameter);
}
参考链接是: http://www.mirkosertic.de/doku.php/javastuff/enumstatemachine
谁能给我一些建议?
【问题讨论】:
-
这看起来不像 ObjectiveC。
-
是的,你说得对,我的要求不是很清楚;这段代码是java,但我想在客观的c中得到相同的结果
-
检查CocoaPods,有几个状态机可用。
-
你不能用
C枚举来做到这一点。有关C++和Java枚举之间的区别,请参阅此 SO 帖子(也适用于C):stackoverflow.com/q/2080681/558933 -
有十几种不同的方法可以做到这一点,它们都不涉及枚举,除了可能枚举表中使用的可能状态。使用好的 ol'
switch将是最明显的选择,或者是一个公共类的多个子类。关于函数指针的几种变体中的任何一种——直接的 C 或 Objective-C 版本。
标签: objective-c enums