1

我正在使用 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 共享指针会自动释放它们的对象吗?)

4

0 回答 0