1

我正在尝试在 Objective-C 中传递对 C++ 对象的引用,因此我可以从另一个类访问该对象,特别是:

// ClassA
-(b2World *)getWorld{
    return world;
}

在另一个类中,我会将返回的对象分配给 ivar

// ClassB
-(void)initClassB{
    world_ = [ClassA getWorld];
}

或者直接访问返回对象的方法

// Classb
-(void)doSomething{
    [[ClassA getWorld] doSomething];
}

在这两种情况下复制 c++ 对象(b2World)并且我必须在 ARC 环境中手动释放复制的对象是否正确?如果是这样,在 ARC 中传递 c++ 对象的最佳做法是什么(不应转移传递对象的所有权,例如它应该是弱引用)?

谢谢你的帮助。

4

1 回答 1

5

你没有返回一个对象。您正在返回一个指针。任何地方都没有复制。

此外,您的第三个代码示例将永远无法工作,因为您说b2World的是 C++ 对象,这意味着它不可能响应 obj-c 消息。

此外,ARC 不会影响 C++ 的语义(除非您将 obj-c 对象嵌入为 C++ 对象的成员变量)。

于 2013-04-24T23:51:56.937 回答