我有一个Objective-C++类,其中包含一些诚实的C++对象指针。
当Obj-C++类被销毁时,它是否立即调用dealloc方法?如果是这样,那么销毁C++类的最佳方法是将
delete obj
在dealloc方法中吗?
当Obj-C++类被销毁时,它是否立即调用dealloc方法?如果是这样,那么销毁C++类的最佳方法是将
delete obj
在dealloc方法中吗?
我猜您说的"Obj-C++ class"指的是包含一些C++类的Objective-C类。
当Objective-C类被销毁时,它们不会调用dealloc方法;它们是通过发送dealloc消息来销毁的。
既然你的init方法实例化了obj,那么在dealloc中调用delete obj
即可:
-(void)dealloc {
delete obj;
[super dealloc];
}
fobjc-call-cxx-cdtors
编译器选项(在XCode中以设置GCC_OBJC_CALL_CXX_CDTORS
的形式公开),ctor和dtor将被调用。另请参见Apple文档,该页面下方有一点解释。std::unique_ptr
中,它也可以正常工作。 - Sebastian
[super dealloc]
,具体参见此处的回答。 - Benjineer[super dealloc]
与ARC不兼容。 - Tin Can