Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+的潜在电弧保持循环+;助手类? 我将C++库集成到一个IOS应用程序(Objic C)中,它使用抽象类来实现事件处理程序模式。 为了接收事件,我需要实现C++类。除非我缺少了一些东西,我一直在实现C++类来实现抽象接口,然后将实例保持在Objtovi-C类中,这样我就可以在它上调用选择器。_C++_Objective C_Automatic Ref Counting_Objective C++ - Fatal编程技术网

C+的潜在电弧保持循环+;助手类? 我将C++库集成到一个IOS应用程序(Objic C)中,它使用抽象类来实现事件处理程序模式。 为了接收事件,我需要实现C++类。除非我缺少了一些东西,我一直在实现C++类来实现抽象接口,然后将实例保持在Objtovi-C类中,这样我就可以在它上调用选择器。

C+的潜在电弧保持循环+;助手类? 我将C++库集成到一个IOS应用程序(Objic C)中,它使用抽象类来实现事件处理程序模式。 为了接收事件,我需要实现C++类。除非我缺少了一些东西,我一直在实现C++类来实现抽象接口,然后将实例保持在Objtovi-C类中,这样我就可以在它上调用选择器。,c++,objective-c,automatic-ref-counting,objective-c++,C++,Objective C,Automatic Ref Counting,Objective C++,这里有一个例子 @implementation MYClass : NSObject { CppHelper * _helper; } - (id)init { if(self = [super init]) { _helper = new CppHelper(self); } } - (void)dealloc { delete _helper; } @end 我的问题是,通过C++构造函数传递自我>代码>创建一个强大的弧引用,

这里有一个例子

@implementation MYClass : NSObject
{
    CppHelper * _helper;
}

- (id)init
{
    if(self = [super init])
    {
        _helper = new CppHelper(self);
    }
}

- (void)dealloc
{
    delete _helper;
}

@end

我的问题是,通过C++构造函数传递<代码>自我>代码>创建一个强大的弧引用,这样我的Objc类将保持在自己的位置上?

使用
\u桥接void*
并将ObjC类存储为
void*
会缓解此问题吗?C++类的生存期是与父Objc类绑定的。


谢谢

是的,您的自我保留在CPP帮助器构造函数中。 我不喜欢弧使简单的指针变强。 您可以定义
\u弱MYClass*\u父级以避免保留循环


另外,为什么不使用objective-C:
@protocol
`s?

的抽象接口呢?通常我会使用@protocol,但库已经存在,我必须与它接口
class CppHelper : public AbstractLibraryInterface
{
private:
    MYClass * _parent;
public:
    CppHelper(MYClass * objCParent)
        : _parent(objCParent)
    { }

    onEvent()
    {
        [_parent handleEvent];
    }
};