iOSアプリ開発しててハマったのでφ(..)メモメモ
iOSv5.0以上だと問題なく動作するのに、
iOS4.3端末だとビルドは通りますが実行するとタイトルにもある
dyld: Symbol not found: _OBJC_CLASS_$_NSJSONSerialization Expected in: /System/Library/Frameworks/Foundation.framework/Foundationのエラーが出ちゃいました。
あ、先に解決方法から書いちゃいますが、
僕の場合はFacebook-SDKのv3.5.1を使っていた為、iOS4.xサポート外だったというオチです。。
チェンジログをちゃんと読め、ということですね。
なのでここから、iOSv4をサポートしているFacebook-SDKのv3.2.1を落としてきて対応しました。
で、本題の
dyld: Symbol not found: _OBJC_CLASS_$_NSJSONSerializationですが、これはそのまま
「NSJSONSerializationが見つからねぇよ!」というエラーです。
なぜiOSv4.3端末で見つからねぇかと言うと、NSJSONSerializatoinクラスはiOSv5以上で利用可能だからです。
参考:Apple開発者サイト
でも、deployment targetを4.3に指定してるとどうしてもiOSv4.3で動作させなければいけません。
もう一つ手がかりとなるのが、Xcode上に表示される
dyld`dyld_fatal_error: 0x2fe01080: trap 0x2fe01084: mov r0, r0のようなエラーです。
これはiOSv5.0以上に対応しているが、
それ未満には対応していないframeworkを呼び出したりしている場合に出やすいエラーです。
まさに今回の現象にズバリマッチしています。
そういう場合は読み込んだframeworkを "Optional" にするなどして対応出来るのですが、
今回の僕の場合はどのframeworkもOptionalに出来ませんでした。
で、組み込んだframeworkやSDKを1つずつチェックしてて、
Facebook-SDKのChangelogに気付いたという事でした。
もしFacebook-SDK(iOS)を利用してて同様のエラーに遭遇した人は確認してみてください。
以上でぇぇぇぇえす。
0 件のコメント:
コメントを投稿