【发布时间】:2010-02-14 19:49:10
【问题描述】:
我正在尝试在我的 Objective-C 程序中使用 std::list 并遇到运行时问题。
我有(为简洁起见编辑)
#import <list>
...
@interface Foo {
std::list<Bar *> *myList;
}
...
@implementation Foo
-(void)loopList {
myList = new std::list<Bar *>;
for (std::list<Bar *>::iterator ii; ii != myList->end(); ++ii)
{
// Do nothing here
}
}
一切都编译得很好,但是在执行 for 循环时我得到了 EXC_BAD_ACCESS。我没有对内容做任何事情,只是循环播放它们(现在)。
我会使用 NSMultableArray,但我需要在迭代时快速插入和删除元素,这是不可能的。另外,我想使用 stl 来解决速度问题。
我的文件设置为 sourcecode.cpp.objcpp。
提前致谢。
【问题讨论】:
-
请记住(和 AFAIK)
stl::list不会在您将对象添加到列表时保留它们,因此如果您要添加NSObject派生类,请确保它们的保留计数足够在运行循环中存活。
标签: objective-c list stl