IF语句似乎在模拟器上工作正常,但不在设备上!

时间:2009-11-10 20:37:14

标签: iphone objective-c button comparison timer

好的,问题是,当我的应用程序在模拟器上运行时,似乎工作正常。但是,在设备上,它不会更新所有标签。我认为错误在这里:

- (IBAction)buttonclick1 {  

     self.startDate = [NSDate date];  
     double value = [self Level];  
     double value2 = [self Level2];  


if ((value2 - value) >= 3.0) {

    ifWork.text = @"DONE!";
    ifWork.textColor = [UIColor yellowColor];

    float noSeconds = (float) [self.startDate timeIntervalSinceNow]; 
  }
}

我是这个游戏的新手。我正在寻找的是,当按下按钮时,它会计算事件发生所需的时间。然后我想在计算中使用这段时间。

我知道IF语句是正确的,因为它在模拟器上运行。但是在设备上,当value和value2相差3然后按下按钮时,没有任何反应(标签ifWork不会改变!)。

非常感谢任何帮助,

斯图

2 个答案:

答案 0 :(得分:2)

您是否在调试器中运行代码以查看会发生什么?也许如果值取决于CPU或网络性能等任何值,您可能会遇到模拟器和实际设备之间的显着差异,因此您无法确定模拟器上的工作原理是否适用于设备。

答案 1 :(得分:1)

可能有几个原因。

  • Level1或Level2结果可能在设备上有所不同(使用设备上不同的未初始化内存
  • value2 - value1可能非常接近3.0但只是小于(双打通常有点不精确)
  • ifWork可能在设备上设置不当(即零),所以没有任何反应。

最好的解决方案是在设备上进行调试(逐行扫描此代码)并检查是否有任何这些事情。