私は目的を持っています-いくつかの正直なC++オブジェクトポインタを含むC++クラス。
Obj-C ++クラスが破棄されると、すぐにdeallocが呼び出されますか?もしそうなら、それから置くことによってC++クラスを破壊するための最良の方法です
delete obj
Deallocメソッドで?
私は目的を持っています-いくつかの正直なC++オブジェクトポインタを含むC++クラス。
Obj-C ++クラスが破棄されると、すぐにdeallocが呼び出されますか?もしそうなら、それから置くことによってC++クラスを破壊するための最良の方法です
delete obj
Deallocメソッドで?
「Obj-C++ クラス」と言うとき、たまたまいくつかの C++ クラスを含む Objective-C クラスを意味していると思います。
Objective-C クラスは、破棄されたときに dealloc を呼び出しません。それらは、dealloc メッセージが送信されることによって破棄されます。
その少しの衒学的な方法で、init メソッドが obj をインスタンス化する場合、はい、delete obj
deallocを呼び出します。
-(void)dealloc {
delete obj;
[super dealloc];
}
Frank Shearar の正解の補足として、OSX 10.4 以降の SDK を使用している場合 (iPhone ランタイムについてはよくわかりませんが、おそらくそうです)、Objective-C クラスの C++ メンバーを含めることもできます。つまり、ポインターに頼ることなく。OSX SDK の以前のバージョンの問題は、C++ メンバーのコンストラクターとデストラクターが単に呼び出されないことでした。ただし、fobjc-call-cxx-cdtors
コンパイラ オプションを指定すると (XCode では設定として公開されますGCC_OBJC_CALL_CXX_CDTORS
)、ctor と dtor が呼び出されます。そのページの少し下にあるApple docsも参照してください。