2009-04-21 56 views
0

我正在玩一点可可的应用程序,我写了一个类的人的对象添加到NSMutableArray。当我尝试访问超出数组限制的对象时,我所得到的是控制台上的“越界”消息。可可/ Objective-C数组超越界限问题

事实上,我预计会更糟。我预计该应用会崩溃!但事实并非如此。

我不确定这是好事还是坏事,但我不知道应用程序内部会发生什么情况以防止其崩溃。我总是有想法访问内存中不存在的对象。通常会杀死每个应用程序。

回答

5

在你的情况下,你实际上并没有被允许直接访问坏内存,因为你通过NSArray对象进行连接。相反,发生的情况是你给对象一个错误的索引,并且它通过抛出一个异常来通知你。

默认情况下,在NSApplication应用程序的主线程上发生的异常不会导致应用程序终止。相反,他们记录错误并中止当前运行循环,然后开始下一个循环。

有关如何在调试阶段处理这些例外情况的更多信息,请参阅this document。它描述了在处理应用程序级异常时可以使用的各种技术和响应。

此外,读写不良内存并不总是导致应用程序崩溃,这就是为什么这些类型的错误可能很难追查。相反,你可能只是在破坏其他对象,并且不知道你在应用程序的周期中一直到后者。这里要记住的重要一点是,NSApplication将压缩主线程上发生的大多数异常,所以您必须对此予以额外的关注。