美文网首页
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