問題
考慮這樣的佈局代碼:置換`fabs`,`fmax`等與CGFloat的使用64位的iOS設備
CGFloat descriptionHeight = // height of a paragraph of text with zero or more words;
CGFloat imageHeight = // height of an image;
CGFloat yCoordinateOfSomeOtherView = fmax(descriptionHeight, imageHeight) + 5.0f;
如何應在第三行被改寫支持64位iOS設備?
(當前的代碼不考慮yCoordinateOfSomeOtherView
是否是float
或double
)
選項
有幾個選項(我不知道這是最好的):
1.定義我自己的宏
#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif
我可以再與取代。
2.從2011年使用tgmath.h
This Stack Overflow answer建議用tgmath.h
更換math.h
。這將替換fmax
的實現,其中每個參數調用__typeof__
,並根據參數類型返回fmax
或fmaxf
。
3.忽略這個問題
由於CGFloats涉及佈局,存儲float
成double
潛在發生的數據丟失通常是微不足道的。也就是說,它們將代表像素的極小部分。
摘要
我在尋找任何其他選項或從別人誰在做之前32位到64位的過渡有益的建議。
是的,佈局的東西並沒有真正達到32位的限制。所以它可能不會成爲一個問題,但它的樂趣,爲未來的參考做心理練習。 –