我已經解決了本文中描述的問題,但想了解它的原因(我花了大量時間弄清楚),因爲我已經在下面的「問題」中提出。UIStepper值 - 經過多次迭代後返回的垃圾值
當使用UIStepper調用IBAction方法時,我遇到了遞增和遞減返回值的問題。當我運行和調試應用程序時,我可以上下移動,並且日誌語句總是反映了預期的步進值,但是當我迭代地增加0.1,0.2,0.3時,然後下降,當我回到0.0時,當我執行if測試,調試器中顯示的changeValue的值是垃圾,測試未導致== 0.0的真實情況。請注意,如果我只增加到0.2,然後回退到0.0,那麼changeValue的if測試工作。只有當我達到0.3時,當我回到0.0時,我得到了垃圾值。
最初,遞增步進我設置stepValue屬性爲:
viewStepper.stepvalue = 0.1
和方法加緊0.3並返回到後0.0 0.0返回的垃圾值。
當我改變了分配:解決
viewStepper.stepValue - 0.1f
問題 - changeValue返回預期的0.0 changeValue我如果測試也不管迭代次數的預期方法的工作。
問題:1)我得到這個,但爲什麼如果stepValue是一個double值,賦值需要明確包含「f」,對我更加好奇2)爲什麼我的方法測試沒有「f」當它分配viewStepper.stepValue屬性時兩個步迭代,但返回垃圾的changeValue當我做三個迭代,然後返回到0.0?
下面是該方法的核心我測試:
- (IBAction)doStepper:(UIStepper *)sender
{
double changeValue = [sender value];
NSLog(@"(double)change value %f", (double)changeValue);
NSLog(@"sender value:%0.1f", [sender value]);
if ((double)changeValue == 0.0) {
if (!something) {
// do stuff
}
// do stuff
} else {
// do stuff
}
}
瞭解。謝謝。 – larick 2012-07-27 19:55:47