我正在使用 Objective-C++ (+Boost) 进行 iPhone 开发。
我处于一个相当紧凑的循环中,需要分配和释放某个对象。
代码是这样的。
for (int i=0;i<100;i++)
{
opt = [[FObj alloc] init];
//do stuff with opt
[opt release];
}
FObj 对象类似于
@interface FObj
MyCPPObj * cppobj;
@end
在 FObj 的实现中有一个 dealloc 方法:
-(void) dealloc
{
delete cppobj; //previously allocated with 'new'
[super dealloc];
}
恐怕如果我不发布,那么“MyCPPObj”就会堆积起来。但是释放会使应用程序在第一个循环后崩溃。我究竟做错了什么?
或者我应该制作 cppobj 和 boost::shared_ptr 吗?
(当objective-C++ 对象被删除时,boost 共享指针会自动释放它们的对象吗?)