【问题标题】:Crash that only occurs via hockeyapp builds?仅通过 hockeyapp 构建发生的崩溃?
【发布时间】:2016-08-06 01:35:54
【问题描述】:

我遇到的问题是,仅当应用程序通过 HockeyApp 而不是通过 Xcode 安装时才会发生崩溃。

这是我从 HockeyApp 得到的报告:

*** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[__NSCFArray objectAtIndex:]: index (-1970199490 (或可能更大))超出范围 (15)” MainViewController.m,第 646 行

指的是这一行:

for (int i; i < [resultsArray count]; i++) {
    if ([[resultsArray[i] valueForKey:@"uniqueId"] isEqualToString:[[NSUserDefaults standardUserDefaults]
                                                           stringForKey:@"FbId"]]) {
        resultsArray = resultsArray[i];
    }
}

知道为什么当通过 HockeyApp 而不是通过 Xcode 安装构建时我会在那里崩溃吗?我什至尝试使用开发证书和分发证书将应用程序构建到设备上,但只要不是通过 HockeyApp 安装构建,两者都可以正常工作。

【问题讨论】:

  • 在 for 循环中我们不应该初始化 i 值吗?比如,int i=0!
  • 哇,解决了!接得好。请将此添加为正式答案,以便我将其标记为正确:)

标签: ios objective-c xcode hockeyapp nsrangeexception


【解决方案1】:

我认为问题在于没有在 for 循环中初始化 i 的值。

应该是for (int i=0;....

如果它没有被初始化,那么 i 的值将是不可预测的,它可能是 null 也可能是它的内存地址的值。

如果你没有初始化它,那么这里会出现无限循环(如果没有崩溃),因为 i 的值会是一个随机的负数 -1970199490,

即使您从 xcode 执行此操作,也会导致相同的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多