これを行うフレームワークコードがいくつかあります。
#ifdef USE_DOUBLE
typedef double real;
#else
typedef float real;
#endif
しかし、次のように定義されUSE_DOUBLE
ている場合(つまり、real == double)にこのタイプを使用しようとすると、次のようになります。
- (id) initSomeObject:(real)arg andSomeOtherStuff:(id)thing
{
self = [super init];
if (self)
{
field = arg;
}
}
[someObject initSomeObject:2.0 andSomeOtherStuff:nil];
値は完全に破棄され、arg
5.3...e-315として表示されます。ただし、スイッチUSE_DOUBLE
をオフにすると、の値は2.0
完全に機能します。これは、iPhone4でXcode4.3.3とLLVM3.1を使用する最新のiOS5以降にあります。iOSはdoubleをうまく処理しませんか?私のUSE_DOUBLE
旗は常に未定義にする必要がありますか?