【问题标题】:Does someone knows about this error in xcode gdb?有人知道 xcode gdb 中的这个错误吗?
【发布时间】:2009-07-21 07:23:00
【问题描述】:

2009-07-21 12:47:14.458 FlashCards[1328:20b] * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray objectAtIndex:]: index ( 0) 越界 (0)'

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    看起来您正试图访问数组中不存在的元素。您正在尝试获取第 0 个元素(第一个),但数组的大小为 0(它是空的)。

    首先检查您的代码在哪里使用数组和 objectAtIndex: 方法,然后在调试时检查数组大小。

    【讨论】:

      【解决方案2】:

      看起来您的应用程序正试图从一个空的 NSCFArray 中获取第一项。调试器是否没有将您指向源代码中导致异常的位置?

      【讨论】:

      • 您知道您在应用程序的哪个位置使用了 NSCFArray 吗?如果是这样,我会去那里尝试隔离索引可能超出范围的情况。
      • 我没有使用任何 NSCFArray...我认为这是导航控制器的堆栈数组
      【解决方案3】:

      那是你的标准数组越界异常。我会启动调试器并尝试找出这是哪个数组。如果不知道,请检查哪些数组中没有任何元素,并在使用函数 objectAtIndex:xyz 之前设置断点。

      【讨论】:

      • 好点。除非我误解了你的意思,否则这需要一些开销并且在我的项目中从来不值得,因为数组越界异常很容易找到和修复。
      • 我不知道你指的是什么开销。您设置两个断点(-[NSException raise] 和 objc_exception_throw)然后运行直到它中断。打印堆栈,您就完成了。
      • 很公平。我从来没有在苹果代码中设置过断点……很高兴知道我可以这样做。
      【解决方案4】:

      请参阅this question 的答案,了解有关如何使用调试器准确找出引发异常的位置的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-29
        • 2023-01-23
        相关资源
        最近更新 更多