[Objective-C] 함수 포인터 사용하기


C/C++에서 종종 사용되는 함수 포인터를
Object-C에서는 어떻게 구현해야 하는가에 대한 샘플 코드이다.
 


// .h --------------------------------

@interface .. {
    NSDictionary* funcMap_;
}

- (void)add;
- (void)subtract;
- (void)multiply;
- (void)divide;


// .m --------------------------------

- (id)init

{
    ... 

    NSArray* fps = [NSArray arrayWithObjects:

                    [NSValue valueWithPointer:@selector(add)],
                    [NSValue valueWithPointer:@selector(subtract)], 

                    [NSValue valueWithPointer:@selector(multiply)],

                    [NSValue valueWithPointer:@selector(divide)], nil];

    NSArray* keys = [NSArray arrayWithObjects:@"a", @"s", @"m", @"d", nil];

    funcMap_ = [[NSDictionary alloc] initWithObjects:fps forKeys:keys];
    ... 

}

- (void)click:(NSString*)command
{

    NSValue* value = [funcMap_ objectForKey:command];

    if (value) {

        SEL fp = [value pointerValue];

        [self performSelector:fp];

    }

}