Objective-C++ がまばらに文書化されていることは誰もが知っています。これについては何も見つかりませんが、適切で明確な検索用語を見つけるのも難しいと感じています. だから、救助へのStackoverflow(私は願っています)!
私は Objective-C(++) クラス内にインスタンスを持つ C++ クラスを持っています (そして、コンストラクター/デストラクタが呼び出されるようにプロジェクト設定を有効にしています)。
@synthesize
d プロパティを介してインスタンスを公開しようとするまで、これはすべて正常に機能します。私はそれをassign
プロパティにします (Obj-C 保持カウントは適用されないため)。コピーコンストラクターが関与すると予想されるインスタンスを設定する場合を除いて、プロパティは機能しているように見えます。私が実際に見ているのは、一時的なインスタンスが作成されていることです(そのコピーコンストラクターが呼び出されています)-これはすべて予想されています。ただし、ivar インスタンスのコピー コンストラクターは呼び出されません。値は「魔法のように」設定されます。@synthesize
d コードはmemcpy
最終ステップとしてa のようなことをしていると思います。これはstruct
C では問題ありませんが、C++ ではあまり役に立ちません。class
コードの正確性は、適切に呼び出されるコピー コンストラクターと代入演算子に依存します。
誰かがこれをさらに詳しく調べたり、動作させたり、C++ オブジェクトを Obj-C(++) クラスの ivar として保持したり、@synthesize
d プロパティ セッターによって呼び出されたコピー コンストラクターを持ったりすることができないことを確認しましたか?
(必要に応じて、これらすべてのサンプル コードを投稿できますが、最小バージョンでも画面一杯程度です)。