1

iphone/ipad 用のユニバーサルを構築しており、展開ターゲットを既に 3.0 に設定しています。iPad 3.2 および iphone 4.1 で問題なく動作します。しかし、iPod 3.1.3 でビルドして実行すると、ランタイムが自動的に iPad コード パスを選択し、UIPopOverController と UIMenuItem が見つからないことを通知します。私の iPhone パス コードでは、そのようなものは使用しません。

正常にビルドされ、実行しようとしたときにのみ、エラーが表示され、見つかりません:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController
  Referenced from: /var/mobile/Applications/My_APP
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

編集

iPad クラスをすべて削除し、App.info Main nib bundle を iphone のみに設定するとします。すると、うまくいきます。問題は、iPad コードを実行することだと思います。iPod またはプロジェクトの何が問題なのかわからない

4

2 に答える 2

2

3.1.3 に存在しないクラスの実行時テストを作成する必要があります。[UIPopoverControler alloc] のようなコードを使用することはできず、フレームワークにウィークリンクする必要があります。

この質問への回答を参照してください。

iPad はまだ iOS 4 を実行していませんが、iOS 4 の機能を含むユニバーサル iOS アプリを作成するにはどうすればよいですか?

(質問はあなたのものとは異なりますが、根本的な問題は同じです。)

またはこの記事:

http://cocoawithlove.com/2010/07/tips-tricks-for-conditional-ios3-ios32.html

于 2010-10-08T11:38:10.863 に答える
1

そのデバイスが問題のコードを決して処理しないため、単にコンパイル時の問題を回避したい場合は、次の方法で popover などのクラスを呼び出すことができます。

Class infopopclass = NSClassFromString(@"UIPopoverController");
if(infopopclass) {
    id infopop = [[infopopclass alloc] initWithContentViewController:myPopViewController];
    [infopop presentPopoverFromRect:CGRectMake(20, 70, 10, 10) inView:self.view permittedArrowDirections:4 animated:YES];
}
于 2010-10-08T13:15:48.650 に答える