【发布时间】:2013-04-24 23:43:07
【问题描述】:
我正在尝试在 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++ 对象的最佳做法是什么(不应转移传递对象的所有权,例如,它应该是弱引用)?
感谢您的帮助。
【问题讨论】:
-
你必须告诉 ARC,这是为了让它的手指远离那个指针! (我从来没有这样做过,所以我不知道要使用的确切
_whatever修饰符。) -
@HotLicks 用于正确定义的 C++ 类,但情况并非如此。 ARC 比这要聪明得多,并且只保留带有
__attribute__((NSObject))声明的类型的指针。
标签: c++ objective-c memory-management automatic-ref-counting objective-c++