【问题标题】:Application crash on 64 bit64位应用程序崩溃
【发布时间】:2014-08-08 22:10:50
【问题描述】:

最近我已将我的应用程序转换为 64 位,并开始在崩溃报告中看到一些崩溃并显示以下消息:

-[__NSArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 0]'

崩溃报告指向下面的代码,但是当我在调试中运行它时,它不会崩溃。有人遇到过类似的问题吗?

NSArray *allViewControllers = self.firstModalViewController.viewControllers;
UIViewController *aViewController = allViewControllers[allViewControllers.count - 2];

【问题讨论】:

  • 您的数组只有一个视图控制器,您尝试索引 0-2,这是您在上面显示的那个大数字。你确定在运行时它应该有 3 个 VC 吗?

标签: ios objective-c cocoa-touch uiviewcontroller 64-bit


【解决方案1】:

objectAtIndex: 方法采用 NSUInteger。如文档中所述,您在 64 位应用程序中有一个 64 位无符号整数。

在构建 32 位应用程序时,NSUInteger 是一个 32 位无符号整数。 64 位应用程序将 NSUInteger 视为 64 位无符号整数

您正在尝试访问索引 (64^2)-2

说实话,阅读提供的代码,我不能说这是一个 64 位相关的问题。看起来你在访问那个数组之前它被填充了一些东西。

您是否尝试过使用调试器打印数组?

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多