objective-c - GHUnit 在 iOS 项目中转换为 ARC 后出现 allocate_pages() 错误

标签 objective-c ios automatic-ref-counting gh-unit

我最近将我的 iOS 项目转换为 ARC。我的项目中有两个目标。一个是应用程序本身,另一个是一组 GHUnit 测试。我有大约 200 个测试,它们在创建和修改核心数据对象方面做了很多工作。测试使用的核心数据存储是一个内存存储,一旦测试完成就会被丢弃(即它不会在任何地方持久化)。

当我的测试已经运行了一段时间(在抛出错误之前它们从未达到完全相同的点,但它总是围绕相同的测试)应用程序崩溃并出现 EXC_BAD_ACCESS(代码=2,地址=... )

控制台输出如下: Console Output

我已按照说明进行操作 here in this answer ,并将我的 GHUnit 目标的 main.m 文件设置为使用 -fno-objc-arc 编译器标志,但这似乎没有帮助。

我不太明白这些错误是什么意思,搜索它们似乎也无济于事。我唯一的猜测是我的内存不足,但我不确定为什么或如何考虑 ARC 应该为我释放对象。

如果有人能给我解决这个问题的任何帮助,我将不胜感激!如果您有任何问题,请给我留言,我会尽快回复您!

谢谢!

最佳答案

克里斯,

首先,由于存在内存耗尽问题,您应该查看在 Instruments 分配工具下运行的测试。记得开启虚拟机自动快照。然后,您应该在测试执行时多次标记堆。

其次,虽然这可能与 ARC 有关,但很可能不是。一般来说,ARC 应用程序,因为它们可以更快地自动释放对象,所以占用空间小于 MRR 应用程序。转向具有不同选项的新编译器可能只是发现了一个预先存在的问题。

第三,因为您使用的是内存数据库,所以我的第一个测试是将其更改为 SQLite 数据库。它的占用空间可以小得多。 (虽然您稍后可能会选择返回内存数据库,但我们正在尝试找出您内存耗尽的原因。内存数据库会使用大量 RAM。因此,让我们排除在外。

完成上述第 1 项和第 3 项任务后,请报告您的结果。

安德鲁

关于objective-c - GHUnit 在 iOS 项目中转换为 ARC 后出现 allocate_pages() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512863/

相关文章:

ios - 调用 JSON 后 NSRangeException 越界

ios - 如何在 dealloc 方法中引用 __weak self

ios - 禁用 UITableView 离屏渲染

ios - UIImage不透明png文件

objective-c - 我如何在 Xcode 中访问 Cocoa Storyboard 库以外的库?

objective-c - 过渡到 ARC 的工具

iOS:ARC 不允许使用 CFTypeRef

javascript - iOS:使用本地 javascript 文件打开 UIWebView

ios - 即使设置了委托(delegate),UICollectionView didSelectItemAtIndexPath 也从未调用过

ios - 快速滚动表格 View 时,原型(prototype)单元格会摇晃或颤抖