发布到应用程序商店时的iPhone App浮点计算。

我上周发布了我的第一个个人iPhone应用程序,用于计算12V船用和船用电池的使用情况 。 我在模拟器和iPhone上进行了大量的测试,当我感觉很舒服时,我将应用程序存档并发布给Apple。 当用户开始使用该应用时,他们注意到计算未按预期工作。 下面的代码是NSManagedObject模型上的一个方法,在调试时发布时会生成一个DIFFERENT输出。

下面应该总结相关的排放项目 – 但如果没有BBDischarge项目,那么它应该返回零。 相反,当没有项目(因此for循环不会触发)时,它返回一个数字,它是domesticAH(NSNumber)的直接乘积。 如果我将domesticAH设置为100,则以下dischargeAH返回8,如果将domesticAH设置为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。
  • 任何其他想法为什么这可能以这种方式表现?

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

过去曾见过这种不同的“行为”。 由“Optmization Level”设置给出。 Debug版本设置为None [-O0],而Release版本设置为Fastest,Smallest [-Os]。

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