发布版本的双重变化值?

时间:2013-08-29 19:01:12

标签: iphone objective-c xcode double

我的应用程序完全适用于调试版本,但是当我创建发布版本并将其安装在我的iphone上时,double值会神秘地改变值。我通过查看日志来了解这一点。

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。 我该如何解决这个问题?为什么它只发生在发布版本上?

1 个答案:

答案 0 :(得分:2)

您忽略了“变量amountComplete未使用未初始化”警告。将声明更改为

double amountComplete = 0;
double possibleTotal = 0;

(在调试模式下,完全是偶然的,这些变量的存储位置恰好在进入循环时包含浮点零。请记住,未定义的行为包括一切似乎只能工作的可能性细。)