0

iPhone应用程序开发非常新。
我正在使用 Objective-C++ 和 CPP 为 iPhone 模拟器开发一个示例应用程序。

我收到以下错误,我不明白为什么会收到这些错误。

2002-1-4 11:11:11.649 myApp[912:592f] *** _NSAutoreleaseNoPool(): Object 0x1b0d2d0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x7c93 0x7b92 0x30d8 0x6ee2 0x1ae95e 0x6013 0x3496 0x43ca 0x39923b 0x3ca0a0 0x3ca121 0x3a1e 0x926d8155 0x926d8012)
2002-1-4 11:11:11.650 myApp[912:592f] *** _NSAutoreleaseNoPool(): Object 0x4f02470 of class __NSArrayReverseEnumerator autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x7c93 0x7b92 0x30d8 0x6ee2 0x1ae95e 0x6013 0x3496 0x43ca 0x39923b 0x3ca0a0 0x3ca121 0x3a1e 0x926d8155 0x926d8012)

我的应用程序中的内存泄漏是否导致这些错误,我得到了这些错误的数量。我有一个更新表格视图的函数,当那个函数被调用时我得到了这些错误,在那个函数中我将元素添加到一个 std::vector 然后调用 [mTableViewList reloadData]; 更新表格视图。

OSX 版本:10.5.8 和 Xcode 版本:3.1.3

4

1 回答 1

1

该错误意味着还没有池。每当您要调用可可时,您都需要在每个线程上执行此操作

当您使用 GCD 使用调度块时,您很好,操作系统会创建线程和池,但是每当您自己创建线程时,您都需要设置 NSAutoreleasePool

在 ARC 下使用 @autoreleasepool,在此之前使用 [[NSAutoreleasePool alloc] init];

于 2012-12-24T11:51:17.377 回答