質問
次のようなレイアウト コードを検討してください。
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;
3 行目は、64 ビット iOS デバイスのサポートでどのように書き直すべきですか?
yCoordinateOfSomeOtherView
(現在のコードはが afloat
か aかを考慮していませんdouble
。)
オプション
いくつかのオプション (どれが最適かはわかりません):
1.独自のマクロを定義する
#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif
その後、に置き換えることができましfmax
たcgfmax
。
2.使用tgmath.h
2011 年のこのスタック オーバーフローの回答math.h
では、に置き換えることを提案していtgmath.h
ます。fmax
これは、 の実装を、各引数を呼び出し、引数の型に応じてまたは__typeof__
を返す実装に置き換えます。fmax
fmaxf
3. この問題を無視する
CGFloats はレイアウトに関連しているため、 を に格納する際に発生する可能性のあるデータ損失float
はdouble
、通常は重要ではありません。つまり、それらはピクセルのごく一部を表します。
概要
以前に 32 ビットから 64 ビットへの移行を行ったことがある人から、他のオプションや役立つアドバイスを探しています。