0
我正在将C++库集成到iOS应用程序(Objective C)中,该应用程序使用抽象类来实现事件处理程序模式。潜在的ARC保留循环与C++助手类?
为了接收事件,我需要实现一个C++类。除非我错过了一些东西,否则我一直在实现C++类来实现抽象接口,然后将一个实例保留在Objective-C类中,以便我可以调用选择器。
下面是一个例子
@implementation MYClass : NSObject
{
CppHelper * _helper;
}
- (id)init
{
if(self = [super init])
{
_helper = new CppHelper(self);
}
}
- (void)dealloc
{
delete _helper;
}
@end
...
class CppHelper : public AbstractLibraryInterface
{
private:
MYClass * _parent;
public:
CppHelper(MYClass * objCParent)
: _parent(objCParent)
{ }
onEvent()
{
[_parent handleEvent];
}
};
我的问题是,是否通过C传递self
++构造函数创建一个强大的电弧参考,这样我的ObjC类将被抓着他们自己?
会使用__bridge void*
并将ObjC类别存储为void*
缓解此问题吗? C++类的生命周期意味着绑定到父类ObjC类。
谢谢!
通常我会使用@protocol,但库已经存在,我必须与它接口 – yano