我有一个objective-C++类,它包含一些诚实的C++对象指针。
当Obj-C++类被销毁时,它会立即调用dealloc吗?如果是这样,那么销毁C++类的最好方法是将
delete obj在dealloc方法中?
发布于 2010-06-29 04:15:16
我认为当您说"Obj-C++类“时,您指的是碰巧包含一些C++类的Objective-C类。
Objective-C类在被销毁时不会调用dealloc;它们是通过向它们发送dealloc消息来销毁的。
如果你的init方法实例化了obj,那么,是的,在dealloc中调用delete obj:
-(void)dealloc {
delete obj;
[super dealloc];
}发布于 2010-06-29 04:28:13
作为Frank Shearar正确答案的补充,如果您使用的是OSX10.4或更高版本的SDK (您可能正在使用;尽管我不确定这里是否有iPhone运行时),您还可以包含Objective-C类的C++成员,即不使用指针。OSX SDK早期版本中的问题是C++成员的构造函数和析构函数不会被调用。但是,通过指定fobjc-call-cxx-cdtors编译器选项(在XCode中,它公开为设置GCC_OBJC_CALL_CXX_CDTORS),将调用ctor和dtor。另请参阅该页面下方的Apple docs。
https://stackoverflow.com/questions/3135782
复制相似问题