【问题标题】:iOS: Maximum memory in simulator?iOS:模拟器中的最大内存?
【发布时间】:2015-08-31 20:20:32
【问题描述】:

当我在模拟器中启动我的应用程序时,它会立即崩溃并显示“错误:内存读取失败”

在 iPad/iPhone 上一切正常,但是当我添加一个简单的“return;”时在核心数据线之前,模拟器启动正常:

return;
CCAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

重要!!: 它不会在任何时候运行该代码,只是编译它。如果我添加“return;”在另一个文件中的相同核心数据连接之前,它运行良好。看起来有某种与核心数据或其他东西的最大“连接”?

我尝试过清理 Xcode(正常和清理构建文件夹),清理模拟器(重置内容和设置),但没有成功。

附加问题:有没有办法重新安装IOS模拟器?

【问题讨论】:

  • 发现是项目中的代码行数。如果我在项目中的其他位置删除了一些行(或者只是添加了一个返回;),那么模拟器不会崩溃。真的很奇怪!!当我编写代码并且它在启动时崩溃时,-我只是在项目中的某处删除(rem)代码,我现在不需要,它再次运行良好......?!?!?!

标签: xcode ios-simulator


【解决方案1】:

“错误:内存读取失败”。今天早上我收到了同样的消息。我发现它的 id 与 Block 相关。

我们知道,如果一个类有一个 Block 作为它的成员,它应该是这样的:

@property(nonatomic, copy)BlockType block;

我的错误是在向 NSArray 实例添加块时忘记使用复制:

[array addObject:aBlock];

最后我解决了这个问题:

MyBlockType copy = [aBlock copy];
[array addObject:copy];
[copy release];

祝你好运!

2013 年 3 月 20 日更新 另一种情况导致“错误:内存读取失败”。

- (void)blockCalledMethod{
    for (BlockType b in _dictionary) {
        b(self);
    }
}

解决我的问题的关键是使用 .allKeys 迭代 NSDictionary。 但是字典中的对象是Block,所以它必须和Block是相对的。

【讨论】:

  • 知道你是如何调试它并发现它与块有关的吗?
  • 不知道。我发现是因为修复后我的代码运行良好。
  • 感谢您的回答,帮助。
【解决方案2】:

我的 iPhone 模拟器也遇到了同样的问题。我在 XCode 中有干净的代码

我已经重置了模拟器

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2013-01-20
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多