반응형
나만의 방법에 대한 사용자 지정 완료 블록
이 질문에 이미 답변이 있습니다.
방금 완료 한 블록을 발견했습니다.
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가 아닌 경우 다음 답변을 참조하십시오.
참고 URL : https://stackoverflow.com/questions/16324095/custom-completion-block-for-my-own-method
반응형
'ProgramingTip' 카테고리의 다른 글
JavaScript 값이 "정수"인지 확인 받았습니까? (0) | 2020.10.15 |
---|---|
OSX Mavericks에 Elasticsearch 설치 (0) | 2020.10.15 |
코드 골프 : Conway의 삶의 게임 (0) | 2020.10.15 |
이니셜 라이저는 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니다. (0) | 2020.10.14 |
Babel 6.x에서 기본 내보내기 값을 필요로합니다. (0) | 2020.10.14 |