使用C ++方法作为ObjC选择器?

时间:2010-05-24 09:54:59

标签: objective-c

我想在我的混合C ++ / ObjC项目中进行某种转发。

我的逻辑是在C ++中,我想提供一个属于C ++对象实例的方法作为objC的选择器。反正有吗?

主要的问题是,无论如何将C ++方法伪装成选择器:),将它提供给ObjC并让它被回调?。

提前致谢, Anoide。

2 个答案:

答案 0 :(得分:3)

不可能获得C ++方法的选择器,因为它们不是由Objective-C运行时管理的。但是你可以:

  • 使用普通的C ++函数指针实现回调
  • 或者:创建一个Objective-C方法(最好是一个类方法)来包装对C ++方法的调用。您可以使用此功能的选择器。

答案 1 :(得分:0)

您可以将C ++对象包装在Objective-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