允许C ++抽象类使用Objective-C委托
我有一个抽象类和他具体的类实现。 我想要做的是在iOS应用程序(Objective-C)中公开具体类,并使用协议将事件分派给ViewController。
这个想法是添加一个符合adHoc协议的目标C委托给这个具体的类。 任何想法如何实现?
不幸的是我读到Objective-C ++不能从C ++类inheritance。
先谢谢你。
一个客观的c ++类不能从一个c ++类inheritance,但它可以包含一个
@interface DelegateObject : NSObject { } - (id) init; - (void) do_something: (NSObject*) thing; @end struct cpp_thing { // this could be a template if you wished, or you could take a copy // or whatever you want void do_something(NSObject* thing) { }; }; @implementation DelegateObject { std::shared_ptr<cpp_thing> _cpp; } - (id) init { if (self = [super init]) { _cpp = std::make_shared<cpp_thing>(); } return self; } - (void) do_something: (NSObject*) thing { _cpp->do_something(thing); } @end
尝试一个有一个关系。 目标C ++对象有一个C ++对象,反之亦然。 然后让他们意识到对方有足够的C ++对象将消息转发给C ++对象。
如果你声明了一个指向id的弱指针,你可以声明一个抽象委托(NSObject中的一个类),然后在CPP源中自由地调用方法。 简单地导入包含抽象委托的文件,然后在ObjC类中实现这些方法本身,并且在没有声明实际的委托的情况下获得一个委托。