2

好的,所以我正在构建一个 iOS 游戏,并且我觉得我对 Objective-c 有很好的掌握,但是让我非常痛苦的一件事是我使用以下内容时遇到的参考错误 -环形

for (MyObject *object in nsMutableArrayOfObjects) {
    // do things with object
}

对比

for (int i = 0; i< nsMutableArrayOfObjects.count; i++) {
    // do things with nsMutableArrayOfObjects[i];
}

我有一些(第一个循环示例)按顺序运行,但我一直收到EXC_BAD_ACCESS错误。我也有一些循环嵌套,我会放在另一个里面。我真的很想知道关键的区别是什么。我假设这些差异与它们如何引用数组中的对象有关。

4

3 回答 3

2

您发布的第一个示例使用快速枚举 - 枚举集合的首选方法。
Apple 在Collections Programming Guide中提供了详细信息。

我不确定是什么导致了EXC_BAD_ACCESS您的情况(听起来更像是内存管理问题)。但是在使用快速枚举时要记住的一件事是,您不能改变正在枚举的集合。

于 2013-06-18T19:12:21.783 回答
0

也许它与内存分配有关,因为 nsMutableArrayOfObjects 不会在每个时钟周期的循环中创建一个新指针,而您的第一个循环会在每个周期中分配一个新指针

击败一个疯狂的猜测

于 2013-06-18T19:13:18.967 回答
-1

两个周期都是正确的,我们无法回答,因为我们没有看到更多代码......无论如何,使用 EXC_BAD_ACCESS 您可能正在访问已释放的对象。

于 2013-06-18T19:22:46.663 回答