투케이2K

309. (ios/objc) completion block 사용해 콜백 (callback) 메소드 구현 본문

IOS

309. (ios/objc) completion block 사용해 콜백 (callback) 메소드 구현

투케이2K 2022. 11. 21. 08:07
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : Objc

 

[소스 코드]

#import "ViewController.h"


// MARK: - [프로젝트-Swift.h import 명시]
#import "objectiveProject-Swift.h"


@interface ViewController ()

@end

@implementation ViewController





// MARK: - [뷰 로드 실시]
- (void)viewDidLoad {
    [super viewDidLoad];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidLoad() :: 뷰 로드 실시] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewWillAppear() :: 뷰 로드 완료] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidAppear() :: 뷰 화면 표시] \n");
    printf("==================================== \n");
    printf("\n");
    
    
    // [콜백 메소드 호출 실시]
    [self getCallBack:2 :@"투케이" :^(BOOL returnBool, NSString *returnString) {
        printf("\n");
        printf("==================================== \n");
        printf("[ViewController >> viewDidAppear() :: 콜백 결과 확인 실시] \n");
        printf("[BOOL :: %d] \n", returnBool);
        printf("[NSString :: %s] \n", returnString.description.UTF8String);
        printf("==================================== \n");
        printf("\n");
    }];
}





// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewWillDisappear() :: 뷰 정지 상태] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidDisappear() :: 뷰 종료 상태] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
-(void)getCallBack:(NSInteger)inputInt :(NSString *)inputString :(void (^)(BOOL returnBool, NSString *returnString))completion{
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> getCallBack() :: 콜백 메소드 수행 실시] \n");
    printf("==================================== \n");
    printf("\n");
    
    // [리턴 데이터에 인풋으로 들어온 메시지 삽입]
    NSString *msg = inputString;
    
    
    // [짝수로 나눠지는 경우 true / 홀수인 경우 false]
    if (inputInt % 2 == 0){
        completion(true, msg);
    }
    else {
        completion(false, msg);
    }
}



@end
 

[결과 출력]

 

 

반응형
Comments