【发布时间】:2011-07-07 13:22:12
【问题描述】:
我在 xcode 中收到以下错误。
对象 0x4e18d00 的错误:未分配被释放的指针 ** 在 malloc_error_break 中设置断点以进行调试
我已经在目标中设置了 NSZombieEnabled,所以我可以查看调用。这是
-[___NSArrayI 发布]
看起来我已经在我的代码中的其他地方释放了一些数组,然后自动释放池在它已经被释放时也试图释放它。
我怎样才能知道在哪里?有什么想法吗?
仅供参考,我正在使用arrayWithCapacity 方法或类似方法创建所有数组,切勿使用alloc 或init 方法。我没有看到我在哪里发布这些相同的数组。 (也许我是瞎子!!)
另外,控制流程如下:我点击UIButton,触发附加到onclick的函数。这将进入各个逻辑层,然后返回NSArray。然后我可以在“onClick 按钮函数”中迭代这个数组并打印内容。
当此“onClick 按钮功能”退出时,我在“main”方法中收到上述错误。
另一个注意事项是,在一个函数中,我创建了一个 NSMutableArray,但想要返回一个 NSArray,所以我使用了 [[mutableArray copy] autorelease]。这样可以吧?
任何建议都将不胜感激,因为我经常很难找到错误的原因。
提前致谢。
【问题讨论】:
-
你有没有按照它的建议在
malloc_error_break上设置一个断点,然后在调试器中运行代码? -
我正要更新我的问题,并询问如何在 xcode 4 中解决这个问题。我之前尝试过但无法弄清楚.. 有没有这方面的教程?
-
对不起,我只知道在 Xcode 3 中怎么做。
-
断点选项卡,底部+号,添加符号断点,在符号中输入malloc_error_break然后点击完成。
-
我已经添加了断点(就像我之前尝试过的那样),但仍然没有。在那一点上它甚至似乎都没有破裂。
标签: objective-c ios nsarray autorelease