1

上周我发布了我的第一个单独的 iPhone 应用程序,它可以计算12V 船用和船用电池的使用情况。我在模拟器和我的 iPhone 上对它进行了激烈的测试,当我觉得一切都很好时,我将应用程序存档并将其发布给 Apple。当用户开始使用该应用程序时,他们注意到计算没有按预期工作。下面的代码是 NSManagedObject 模型上的一种方法,在发布到调试时会产生不同的输出。

下面应该总结相关 Discharge 项目的总数 - 但如果没有 BBDischarge 项目,那么它应该返回零。相反,当没有项目时(因此 for 循环不会触发),它会返回一个数字,该数字是国内AH 的直接乘积(一个 NSNumber)。如果我将国内AH设置为100,下面的放电AH返回8,如果将国内AH设置为1000,则返回83(浮点数显示时四舍五入)。再次强调,在模拟器上运行或直接放在我的 iPhone 4s 上时,以下内容可以正常工作,只有在通过应用商店发布时,它才会搞砸。

//Other dynamics hidden for simplicity
@dynamic domesticAH;
@dynamic voltage;
@dynamic profileDischarge;

-(NSNumber*) dischargeAmpH
{

    float totalWattsPD;

    //Calculate the watts per day so we can accurately calculate the percentage of each item line
    for(BBDischarge* currentDischarge in self.profileDischarge)
    {
        float totalWatt = [currentDischarge.wattage floatValue] ;
        float totalMinsPD = [currentDischarge.minutesPD floatValue]/60;
        float totaltimesUsed = [currentDischarge.timesUsed floatValue];
        float numberInOperation = [currentDischarge.number floatValue];
        totalWattsPD = totalWattsPD + ((totalWatt * totalMinsPD) * (totaltimesUsed * numberInOperation));
    }

    int voltage = ([self.voltage integerValue] + 1) * 12;

    float totalAmpsPD = totalWattsPD / voltage;

    return [NSNumber numberWithFloat:totalAmpsPD];

}

如您所见,self.domesticAH 在任何地方都没有出现在该方法中,并且由于我无法在模拟器中重新创建它,因此我很难追踪它。

几个问题:

  • 我可以调试我的应用程序的实时版本吗?将 XCode 附加到我正在运行的、App Store 下载的应用程序实例?
  • 有没有一种方法可以模拟存档中的安装 - 有人会推荐临时分发来执行此操作吗?我还没有使用 ad hoc。
  • 任何其他想法为什么这可能会以这种方式表现?
4

1 回答 1

1

与其说是答案,不如说是一个提示。但是,正如我在评论中已经说过的那样:您可以检查 Release 和 Debug 版本之间的不同行为。

这种不同的“行为”在过去已经看到过。由“优化级别”设置给出。Debug 版本设置为 None [-O0],而 Release 版本设置为 Fastest, Smallest [-Os]。

这里是一个例子..这里是另一个..

于 2013-01-09T08:23:20.737 回答