2013-08-29 34 views
0

我的应用程序在调试版本上完美运行,但是当我创建发行版本并将其安装在我的iphone上时,双值会神奇地改变价值。我通过查看日志来了解这一点。发布版本的双重更改值?

double amountComplete; 
double possibleTotal; 

for (int i = 0; i<self.tasksArray.count; i++) { 
    Task *myTask = [self.tasksArray objectAtIndex:i]; 
    possibleTotal = possibleTotal + [myTask.size doubleValue]; 

    if (myTask.completed==[NSNumber numberWithInt:1]) { 
     amountComplete = amountComplete + [myTask.size doubleValue]; 
    } 

} 

可能数额最终为高位数字,例如12312213.0000。 我该如何解决这个问题,为什么它只发布在发布版本上?

回答

2

您忽略了“变量amountComplete使用未初始化”的警告。完全由事故更改报关单

double amountComplete = 0; 
double possibleTotal = 0; 

(在调试模式下,,这些变量的存储位置会包含在进入循环浮点零。记住,不确定的行为包括一切出现的可能性工作就好了。)

+0

谢谢!出于某种原因,它没有给我发出警告 – user2643184

+0

挖掘Xcode设置,直到找到用于打开警告的复选框。如果你找不到一个复选框,但是你找到了一个“附加的编译器命令行选项”的文本输入字段,把'-Wall'(如图所示)放在那里。注: '墙'不是*所有的警告;所有警告几乎总是反映出您的代码存在真正的问题。如果你愿意,你可以变得更加激进;看到这里:http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Warning-Options.html – zwol