1

アプリで Three20 ライブラリを使用していますが、アプリのリンク中に次のエラーが表示されます。

「_UIApplicationDidEnterBackgroundNotification」、次から参照: libThree20UINavigator.a(TTBaseNavigator.o) の _UIApplicationDidEnterBackgroundNotification$non_lazy_ptr (おそらく次のことを意味していた: _UIApplicationDidEnterBackgroundNotification$non_lazy_ptr) ld: シンボルが見つかりません

この問題は、BASE SDK IOS 3.2 シミュレーター用にビルドしようとすると発生しますが、IOS 4.1 シミュレーターでは発生しないことがわかりました。次の設定を試してみましたが、役に立ちませんでした。

Architecture for my project and ALL Three20 projects set to Optimized
Project Settings/Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator

Architecture for my project and ALL Three20 projects set to Standard
Project Settings/Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator

Architecture for my project and ALL Three20 projects set to Standard
Active Target - BaseSDK for my project and ALL Three20 projects set to IOS 3.2 Simulator
Project Settings - BaseSDK for my project set to IOS 4.1 Simulator

動作する設定は次のとおりです。

Architecture for my project and ALL Three20 projects set to Standard (or Optimized)
Active Target/Project Settings BaseSDK for ALL Three20 projects set to IOS 3.2 Simulator
Active Target/Project Settings BaseSDK for my project set to IOS 4.1 Simulator

私はこれらの順列を試すのにうんざりしています。何が起こっているのかを本当に理解したいのですが、意味のあるログを見つけることができませんでした。コメント/回答ありがとうございます。

4

3 に答える 3

2

弱いリークのUIKitは、アプリの速度を不必要に大幅に低下させます。そうしないでください。

Base SDKを可能な限り最高に設定してから、Deployment Targetをサポートする最低のOSに設定します。コンパイラーは、下位​​のSDKで使用できないAPIのみを自動的にウィークリンクします。

古いOSで実行する場合は、使用する前に新しいクラスを確認する必要があることに注意してください。

于 2010-10-15T19:46:54.153 に答える
1

そのシンボルは 4.0 SDK で宣言されています。iOS 3.x ではその機能を使用できません。2 つの選択肢があります。

1) ターゲット iOS 4.0 以降

2) ターゲットとする SDK で動作するように構築された three20 の以前のリリースを使用する

于 2010-10-09T00:05:18.497 に答える
0

この問題を回避する最善の方法は、UIKit に対して弱いリンクを作成することです。これは、一般タブのプロジェクト/ターゲット設定で行うことができます。Linked Libraries セクションで UIKit を見つけ、タイプを Required から Weak に設定します。

于 2010-10-14T17:40:33.543 に答える