-1

そのため、カイルがここに投稿したユニバーサル フレームワーク プロジェクトを使用して、多くのクラスを静的フレームワークとしてまとめました: https://github.com/kstenerud/iOS-Universal-Framework

iOS 5.0 から 6.0 までは正常にコンパイルおよび実行され、現在数か月間使用されています。通常、結果のフレームワークをプロジェクトにコピーし、リンクして使用します。ほとんどのクラスで ARC を使用します。

最近、xcode 4.5 でゼロからスタティック ライブラリ プロジェクトを作成し、フレームワークからすべてのクラスをコピーしました。追加したプロジェクト(以前はフレームワークで使用されていた)と同様に、すぐにコンパイルされましたが、iOS 5.1.1を搭載したiPhone 4で実行すると、実行時にEXC_BAD_ACCESSメッセージでクラッシュし、強調表示されませんクラッシュに関連する特定のコード。iOS 6.0 シミュレーター、および iOS 6 を実行している iPhone 4S ではすべてがうまく機能します。

私が把握したほとんどのことは、バックグラウンド プロセスとして登録され、ロケーション マネージャーを使用する (かなり大きな) ブロック内でエラーが発生していることです。現在、5.1 シミュレーターを再インストールして、それもクラッシュするかどうかを確認しています。

静的ライブラリと静的フレームワークの処理方法に、私が気付いていない大きな違いはありますか? その点で、iOS 5 と 6 の間に大きな違いはありますか? -ObjC や -all_load など、リンカー フラグを少しいじってみました。投稿するのに役立つコードやエラー文字列はありますか? 問題がどこにあるのか完全にはわからないので、まだ何も含めていません...

4

1 に答える 1

2

Apple 開発ボードで議論した結果、プロジェクトのビルド設定で iOS 6.0 の iOS 展開ターゲットを使用してスタティック ライブラリをコンパイルしていたことがわかりました。それを iOS 5.0 に切り替えれば、どこでも動作します。

これに遭遇する将来の人々のために明確にするために(Xcode 4.5を使用:ファイルツリーでルートXcodeプロジェクトをクリックし、次にプロジェクト名(ターゲットではなく)をクリックしてから、プルの「情報」タブの下を見てください- 「iOS Deployment Target」と表示されているダウンを開き、サポートする最も低い OS バージョンに切り替えます。

于 2012-10-16T18:23:13.840 に答える