2010-07-09 40 views
4

[我可能會誤解這整個主題,因爲我已經使用允許開發人員幾乎完全忽略Java等處理器體系結構的語言成長起來,除了在某些特定情況下。 如果我有一些錯誤的概念,請糾正我。]使用CGFloat而不是float?他們不這樣做

閱讀here似乎建議是使用CGFloat的而不是說,浮動,因爲它未來的樣張我對不同的處理器架構(64位把手浮不同)代碼。假設這是正確的,那麼爲什麼UISlider,直接使用float(爲值)? 對我來說,閱讀他們的float並將其轉換爲CGFloat是不是錯誤(或什麼),因爲無論如何,如果體系結構發生變化,我的代碼是不正確的?

回答

6

CGFloat對於float只是一個typedef。這爲CGFloat提供了靈活性,使其在道路上有所不同。這就是爲什麼使用它來驗證你的代碼的原因。 Objective-C與許多類型做了這個,NSInteger是另一個例子。

雖然它們可以互換使用,但我同意它不會出現在UISlider的情況下,蘋果是dogfooding

+0

+1因此,您認爲這些影響是針對讀取和寫入滑條上的值的代碼的影響?只使用浮點數? – 2010-07-09 15:40:22

+0

我說如果它是'浮動'使用'浮動';)一致性是重要的。理想情況下,它將始終是「CGFloat」。 – 2010-07-09 15:44:14

2

CGFloat是Core Graphics的一部分,用於諸如像素值之類的東西,這些值多年來已經發生了很大的變化(這裏的任何人都是TRS-80愛好者?)。因此,建議使用CGFloat來獲取與顯示相關的繪圖值。

滑塊的值與圖形無關。它只是0.0到1.0,可以通過浮點數精確處理,並且可能是16位浮點數。

+0

因此,即使體系結構發生變化,浮點數也是浮點數嗎? – 2011-06-03 22:57:23

+0

實際上float是什麼取決於體系結構(參考endianess)。從編程的角度來看,您始終可以保證它能以相同的方式「工作」。同樣,無論實際的顯示和體系結構如何,CGFloat總會爲計算機圖形相關的計算提供良好的結果。 – PapaSmurf 2011-06-06 23:03:02

相關問題