美文网首页
iOS 状态机 TransitionKit

iOS 状态机 TransitionKit

作者: eden_lx | 来源:发表于2023-08-17 17:16 被阅读0次

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];

相关文章

网友评论

      本文标题:iOS 状态机 TransitionKit

      本文链接:https://www.haomeiwen.com/subject/vtlrmdtx.html