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

オブジェクトを返していません。あなたはポインタを返しています。どこにもコピーはありません。

また、3 番目のコード サンプルは機能しません。これb2Worldは、C++ オブジェクトであると言ったためです。つまり、obj-c メッセージに応答できない可能性があります。

また、ARC は C++ のセマンティクスには影響しません (obj-c オブジェクトを C++ オブジェクトのメンバー変数として埋め込む場合を除く)。

于 2013-04-24T23:51:56.937 に答える