我有一个抽象类和他的具体类实现。我想做的是在 iOS 应用程序(Objective-C)中公开具体类,并使用协议将事件分派到 ViewController。
这个想法是向这个具体的类添加一个符合 adHoc 协议的目标 C 委托。任何想法如何实现它?
不幸的是,我读到 Objective-C++ 不能从 C++ 类继承。
先感谢您。
我有一个抽象类和他的具体类实现。我想做的是在 iOS 应用程序(Objective-C)中公开具体类,并使用协议将事件分派到 ViewController。
这个想法是向这个具体的类添加一个符合 adHoc 协议的目标 C 委托。任何想法如何实现它?
不幸的是,我读到 Objective-C++ 不能从 C++ 类继承。
先感谢您。
一个客观的 c++ 类不能从一个 c++ 类继承,但它可以包含一个
@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 类中实现方法本身,您就可以在不声明实际委托的情况下获得委托。