NSIntegerとCGFloatの実体は・・・

これはどちらかというと、Objective-Cで気をつけなければならないことであるが、NSIntegerとCGFloatの実体はmacOSやiOS端末によって違いがある。正確には、32bit版のOSが動いているか、64bit版のOSが動いているかどうかで変わってくる。

まず、NSIntegerだが、これはlong型のtypedefである。macOS及びiOSではC/C++における整数型には気をつけよで言及しているデータ型モデルで言えば、32bitでは「ILP32」、64bitでは「LP64」が採用されていることから、32bitでは32bit整数、64bitでは64bit整数となる。

次に、CGFloatだが、この実体は32bitではfloat型、64bitではdouble型のtypedefとなっている。このことによって、思わぬバグの原因となっていることに注意が必要である。詳細については以下のURLが詳しい。

iOSやmacOSアプリを開発するときはこのような落とし穴があるので、気をつけたいところである.

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。ご用の方はコメントかコンタクトフォームにて。
スポンサーリンク

フォローする