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ビットへの移行は問題なく行えるものとは考えられるので、早い段階で行う必要があるだろう。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。