前回「iOSアプリを App Store にバージョンアップ申請するときの手順メモ」のときに iOSアプリのバージョンアップ申請をしてから約3ヶ月、ある不具合の対応をするために、Xcode で Distribution用のバイナリをビルドしたのですが、今まで見たことのない次のようなエラーが表示され、バイナリが作成できないという事態に遭遇しました。
Assignment to Objective-C's isa is deprecated in favor of object_setClass()
どうやら「JSONKit.m」のコンパイルに失敗したらしいというのは分かるのですが、原因がさっぱり思い当りません。
これ!
なかなかピンポイントな情報がググれずに途方に暮れていると、某筋から超有力な情報をいただくことができました。
※ビルド時にJSONKit.mで以下のエラーが発生した場合は対応手順を参考にしてください。
JSONKitの利用および改変に関しては、JSONKitのライセンスにご注意ください。
「Assignment to Objective-C's isa is deprecated in favor of object_setClass()」
【対応手順】
- ビルド後に左側に表示されるエラーおよび警告のリストのうち上記エラーの項目をクリック
- Issueの下に「Fix-it Replace …」で始まる文が表示されていることを確認してEnterキーを押下するとXcodeが自動で修正
- 上記エラー全てに同じ処理を実施
http://mb.cloud.nifty.com/doc/quickstart_ios.htm
対応方法
今回は、この手順で対応しました。
「Assignment to Objective-C's isa ・・・」とのエラーをダブルクリック。
コンパイルエラーの箇所が開くので、あらためて「Assignment to Objective-C's isa ・・・」をダブルクリックして、
「Fix-it ・・・」が表示されたら、Enterキーでコードを修正します。
全てのエラーに適用して、Distribution用のバイナリを再ビルドすると、問題なく作成することができるようになりました。
それにしても、バージョンアップ時はいつも想定外の問題に悩まされます。。