何が起こるかに応じて状態を変更する状態駆動型クラスがあります。クラスには、さまざまなメソッドのコード全体に散りばめられた多数の場所から呼び出される状態プロパティがあります。
その結果、状態変更ロジックが何であるかを特定するのは簡単/明白ではないため、次の擬似コードの行に沿って、専用のメソッドで状態変更を集中化することを考えていました
- (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、その他?
ティア
(本格的な状態パターンの実装は、iOS で簡単でない限り、やり過ぎのように思えます)