6

Xcode 4.4、Mountain Lion、llvm 4.0 コンパイラ。私は自分のアプリをビルドします.ios5、ios6デバイスで動作しますが、ios 4.2を搭載したiphone 3gでは次のようなエラーがあります:

dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides
Expected in: /usr/lib/libobjc.A.dylib

dyld: Symbol not found: _objc_storeStrong
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides
Expected in: /usr/lib/libobjc.A.dylib

Xcode 4.3 では、強力な unsafe_unretained 修飾子のみを使用しているため、すべてが機能していました。

私のアプリにアーク ライブラリがリンクされていないことがわかりました。

libarclite_iphoneos.a と手動でリンクしようとしましたが、反応がありません。フラグをリンクするために -fobj-arc を追加しましたが、反応はありません。

iPhone 3g のサポートは、4.4 ではなく XCode 4.5 で廃止されると思いました。そうですか?

4

2 に答える 2

3

問題が見つかりました。エラーはiRateライブラリが原因でした。このライブラリへの参照を削除すると、すべてが機能し始めます。

更新: 最後のバージョンに更新した後、すべてが正常に動作します。説明してくれた @Nick Lockwood に感謝します。iOS では、 [class load] メソッドが実行された後にarclite lib がロードされます。したがって、初期化を遅らせる必要があります。iRate では、load メソッドに performOnTheMainThread を挿入しました。

于 2012-08-18T20:42:47.597 に答える
1

Other Linker Flagsを追加-fobjc-arcしてみてください。

于 2012-08-10T00:07:27.807 に答える