2013-08-29 59 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