LoginSignup
0
0

More than 5 years have passed since last update.

Unity4で書き出したXcodeプロジェクトにNCMB iOS SDKを組み込むとiOS9でEXC_BAD_ACCESSが出るのを何とかしてみた

Posted at

概要

Unity4で書き出したXcodeプロジェクトにNCMB iOS SDKクイックスタートの「SDKをダウンロードして利用する」に従って導入した場合、ビルドしたアプリをiOS9で動かすとEXC_BAD_ACCESSが出てしまいます。

Unity上でUnity SDKを導入するのではなく、Unityから書き出したXcodeプロジェクト上でiOS SDKを導入する場合です!

原因

Unity4から書き出されたXcodeプロジェクトはObjective-C Automatic Reference Counting(ARC)がNOに設定されています。つまり非ARCなプロジェクトです。
一方でNCMB iOS SDKのソースコードはARC前提で実装されています。
非ARCなプロジェクトでARCなコードを混在させてしまったため、想定外の部分でメモリが解放されてEXC_BAD_ACCESSが発生したものと思われます。
iOS8以前で発生しなかった明確な理由は不明ですが、メモリ管理周りの仕様の厳格化が影響しているのかなと思います。(iOS6→iOS7の時も同じようなことがありました)

回避策

ARCなソースコードをARCでコンパイルするように、ファイル毎にコンパイルフラグを付けてあげることで回避できます。
「Project > Targets > Build Phases > Compile Sources」で、インポートしたNCMB iOS SDKの全てのファイルのCompiler Flagsに「-fobjc-arc」を設定するだけです。
NCMB iOS SDKのファイル数がめっちゃ多いんですけどね・・・)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0