2011-08-30 57 views
0

我正在處理一些非常奇怪的問題,只是試圖在obj-c中傳遞一個float參數。通過浮動給垃圾值

我有一個其經由NSNotification調用的方法:

- (void)presetChanged:(NSNotification*)notification { 

float newValue = [[S76PresetManager sharedManager] getValueForKey:symbol]; 

[self setValue:newValue animated:YES]; 
[PdBase sendFloat:newValue toReceiver:symbol]; 
} 

當我通過調試器,浮子運行此(比如0.5)將保持不變以及被髮送到[PdBase sendFloat:]線。但是,在[self setValue:animated:]調用中,我得到的垃圾值爲3.68934881e + 19。這很奇怪。有什麼建議麼?

在此先感謝

編輯:沒什麼特別的是發生[個體經營的setValue:動畫:],只是在做一些界限將它發送到另一個方法之前檢查...

- (void)setValue:(float)newValue animated:(BOOL)animated { 
float oldValue = value; 

if (newValue < 0.0) 
    value = 0.0; 
else if (newValue > maxValue) 
    value = maxValue; 
else 
    value = newValue; 

[self valueDidChangeFrom:oldValue to:value animated:animated]; 
    } 
+0

setValue調用的外觀如何? – Goz

+1

可以請你展示setValue的方法定義:animated:? – bizsytes

+0

在頭文件中呢? (如果它在頭文件中未聲明,並且setValue:animated:方法在源代碼後面比presetChanged更晚:那麼您可以改變參數,因爲簽名將默認爲id的參數類型 - 儘管編譯器會警告您這種情況...) –

回答

1

假設你AREN 「T做什麼奇怪[個體經營的setValue:NEWVALUE動畫:是] ...

如何:

NSNumber *newValue = [NSNumber numberWithFloat:[[S76PresetManager sharedManager] getValueForKey:symbol]]; 

[self setValue:newValue animated:YES]; 
[PdBase sendFloat:[newValue floatValue] toReceiver:symbol]; 
+0

工作,謝謝!有點奇怪,我無法通過一個簡單的浮點參數,雖然... – chmod

+1

如果爲setValue聲明的類型是(id)或(NSNumber *),那麼你需要傳遞一個對象,而不是一個原始的float值,這就是爲什麼上面的代碼適合你。 –