티스토리 뷰

objc 에서 콜백함수에 대한 이벤트리스너를 만드려면 1. block(^) 2. selector 3. noti 4. delegate 가 있다고 한다.

현재 상황에서 나에게 필요한건 block 이었기 때문에 혹시 필요하신 분들을 위해 샘플코드를 제공합니다.

@implementation
-(void)doSomething:(void (^)(BOOL, int))completionBlock
{
    NSLog(@"Do Something first");

    completionBlock(YES, 1);
    completionBlock(NO, 2);

    NSLog(@"Then may be something else");
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self doSomething:^(BOOL isOk, int code) {
        //code
    }]        
}
@end

typedef 정의 스타일

헤더
typedef void (^responseBlock)(BOOL, int);

@implementation
-(void)doSomething:(responseBlock)completionBlock
{
    NSLog(@"Do Something first");

    completionBlock(YES, 1);
    completionBlock(NO, 2);

    NSLog(@"Then may be something else");
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self doSomething:^(BOOL isOk, int code) {
        //code
    }]        
}
@end

참고출처
http://www.knowstack.com/objective-c-blocks-sample-code

댓글