oc中状态机的使用框架TransitionKit使用解析
TKStateMachine *stateMachine = [TKStateMachine new];
TKState *idle = [TKState stateWithName:@"idle"];
[idle setDidEnterStateBlock:^(TKState *state, TKTransition *transition) {
NSLog(@"idle");
}];
TKState *call = [TKState stateWithName:@"call"];
[call setDidEnterStateBlock:^(TKState *state, TKTransition *transition) {
NSLog(@"call");
}];
TKState *meeting = [TKState stateWithName:@"meeting"];
[meeting setDidEnterStateBlock:^(TKState *state, TKTransition *transition) {
NSLog(@"meeting");
}];
TKState *waiting = [TKState stateWithName:@"waiting"];
[waiting setDidEnterStateBlock:^(TKState *state, TKTransition *transition) {
NSLog(@"waiting");
}];
[stateMachine addStates:@[idle, call, meeting, waiting]];
stateMachine.initialState = idle;
TKEvent *idleEvent = [TKEvent eventWithName:@"idleEvent" transitioningFromStates:@[call, meeting, waiting] toState:idle];
TKEvent *callEvent = [TKEvent eventWithName:@"callEvent" transitioningFromStates:@[idle, meeting, waiting] toState:call];
TKEvent *meetingEvent = [TKEvent eventWithName:@"meetingEvent" transitioningFromStates:@[idle, call, waiting] toState:meeting];
TKEvent *waitingEvent = [TKEvent eventWithName:@"waitingEvent" transitioningFromStates:@[idle, call, meeting] toState:waiting];
[stateMachine addEvents:@[ idleEvent, callEvent, meetingEvent , waitingEvent]];
[stateMachine activate];
[stateMachine isInState:@"idle"];
状态改变
[self.stateMachine fireEvent:state userInfo:nil error:nil];
网友评论