ProgramingTip

나만의 방법에 대한 사용자 지정 완료 블록

bestdevel 2020. 10. 15. 08:06
반응형

나만의 방법에 대한 사용자 지정 완료 블록


방금 완료 한 블록을 발견했습니다.

 completion:^(BOOL finished){


                     }];

내 방법이 완료 블록을 가져 오려면 어떻게해야합니까?


1) 자신의 완료 블록을 정의하십시오.

typedef void(^myCompletion)(BOOL);

2) 완료 블록을 매개 변수로 사용하는 메소드를 만듭니다.

-(void) myMethod:(myCompletion) compblock{
    //do stuff
    compblock(YES);
}

3) 이것은 당신이 사용하는 방법입니다,

[self myMethod:^(BOOL finished) {
    if(finished){
        NSLog(@"success");
    }
}];

여기에 이미지 설명 입력


블록을 사용자 정의 유형으로 정의합니다.

typedef void (^ButtonCompletionBlock)(int buttonIndex);

그런 다음 메소드에 대한 인수로 사용합니다.

+ (SomeButtonView*)buttonViewWithTitle:(NSString *)title 
                          cancelAction:(ButtonCompletionBlock)cancelBlock
                      completionAction:(ButtonCompletionBlock)completionBlock

코드에서 호출하면 다른 블록과 가변됩니다.

[SomeButtonView buttonViewWithTitle:@"Title"
                       cancelAction:^(int buttonIndex) {
                             NSLog(@"User cancelled");
                   } 
                     completionAction:^(int buttonIndex) {
                             NSLog(@"User tapped index %i", buttonIndex);
                   }];

블록을 트리거 할 때가 널 호출하십시오 completionBlock()(여기서는 completionBlock블록의 로컬 사본 이름).


블록 변수는 구문에서 C의 함수 포인터와 유사합니다.

구문이 추악하기 때문에 종종 형식 정의 선택할 수 있습니다.

typedef void (^MyFunc)(BOOL finished);

- (void)myMethod:(MyFunc)func
{
}

typedef가 아닌 경우 다음 답변을 참조하십시오.

typedef를 사용하지 않고 블록 변수 선언

참고 URL : https://stackoverflow.com/questions/16324095/custom-completion-block-for-my-own-method

반응형