2010-05-24 4 views
5

나는 혼합 C++/ObjC 프로젝트에서 어떤 종류의 포워딩을하고 싶습니다.C++ 메서드를 ObjC 선택기로 사용 하시겠습니까?

논리가 C++이고 objC에 대한 선택기로 C++ 객체 인스턴스에 속한 메소드를 제공하고자합니다. 이 작업을 수행 할 여지가 있습니까?

주로 질문입니다. 어쨌든 C++ 메서드를 선택기로 가짜로 만듭니다 : ObjC에주고 그것을 다시 호출 할 수 있습니까?).

미리 감사드립니다. Anoide.

답변

3

Objective-C 런타임에서 관리하지 않으므로 C++ 메서드의 선택기를 가져올 수 없습니다. 당신은하지만, 할 수 있습니다

  • 콜백을 구현하기 위해 일반적인 C++ 함수 포인터를 사용
  • 또는 : 오브젝티브 C의 방법을 만들기 (가장 것 클래스 메소드가) 당신의 C++ 메소드에 호출을 래핑합니다. 그러면이 기능의 선택기를 사용할 수 있습니다.
0

당신은 목표 - C 프록시 객체의 C++ 객체를 래핑 수 :

@interface MyObjCClass: NSObject { 
    MyCPPClass *thing; 
} 
-(int)foo; 
@end 

@implementation MyObjCClass { 

    -(id)init { 
    if (self = [super init]) { 
     thing = new MyCPPClass(); 
    } 
    return self; 
    } 

    -(void)dealloc { 
    delete thing; // It's been a long time since I last did C++; I may have the incorrect syntax here 
    [super init]; 
    } 

    -(int)foo { 
    return thing->foo(); 
    } 
} 
@end 
관련 문제