본문 바로가기

교육/Objective-C

[Objective-C] c function pointer

1. function pointer

c 함수포인터 처럼, objective-C에서도 함수포인터 얻어와서 호출할 수 있다.



2. 샘플 코드

@interface Car : NSObject

-(void) go:(int)a speed:(int)s;

@end


@implementation Car

-(void)go:(int)a speed:(int)s

{

    NSLog(@"Car go :  %d %d",a,s);

}

// go(id obj, SEL s, ...) 변경

@end

id CreateObject(NSString* name)

{

    Class c = NSClassFromString(name);

    return [[c alloc] init];

}

void foo(id obj)

{

    //obj Car인지확인

    if ([obj isKindOfClass:[Car class]])

    {

        NSLog(@"yes");

    }

    else

    {

        NSLog(@"no");

    }

}

int main()

{

    Car* p = [[Car alloc] init];

    // 클래스 얻는

    SEL s =  @selector(go:speed:);

    [p performSelector:s]; // go(c1,s)


    typedef id(*PF)(id, SEL, ...);

    PF* f = (PF)[p performSelector:s]; //objC함수로 부터 c함수 포인터 얻기

    f(p, s, 1,2);//[p go:1 speed:2]

    return 0;

}

'교육 > Objective-C' 카테고리의 다른 글

[Objective-C] NSString parsing  (0) 2018.06.26
[Objective-C] 지연된 초기화  (0) 2016.08.03
[Objective-C] category  (0) 2016.08.01
[Objective-C] protocol  (0) 2016.08.01
[Objective-C] kvo(key value observing)  (0) 2016.08.01