macOSアプリの64ビットへの移行で気をつけるべきこと

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

macOSではHigh Sierraが32ビットアプリを条件なしでサポートする最後のバージョンとなったことで、次のバージョンからは32ビットアプリを動作させることができない可能性が高い。ここではmacOSアプリを64ビットに移行させるときに気をつけるべきことを書いてみたい。

最も、Swiftで書かれたアプリや、最近開発を開始したプロジェクトであれば、すでに64ビットへの対応が完了しているので、多くの場合は特段の対応が求められることはない。一般的にはiOSの64ビットへの移行の感覚で進めれば問題ない。

ただし、気をつけなければならないのは、以下の場合である。

  • 数値オーバーフローを意図的に起こしている場合
  • ポインター演算を行なっている場合
  • CGFloatを使っている場合

数値オーバーフローを意図的に起こしている場合、特にSwiftのInt型、あるいはC/Objective-Cのlong型やNSInteger型を使っている場合は、バグが発生する。というのは、これらの型は32ビットバイナリーか64ビットバイナリーかで実際のデータサイズが異なり、意図的にオーバーフローさせている場合にそのサイズの違いで問題が発生するためである。

ポインター演算を行なっている場合も、上記の理由から要注意である。ポインター演算を行う場合は、intptr_tまたはuintptr_tを使うべきだが、macOS/iOSではlongを使っている場合が多いので、実害は多いとはいえないが。

また、CGFloat型も32ビットアプリでは単精度、64ビットアプリでは倍精度という違いがあるため、念のため気をつけておきたい。

実のところ、よほどのことがなければそれほど苦労せずに64ビットへの移行は問題なく行えるものとは考えられるので、早い段階で行う必要があるだろう。

タイトルとURLをコピーしました