私は、iPad バージョンの UIPopoverController を使用するユニバーサル アプリに取り組んでいます。(ベース SDK とデプロイ ターゲットの両方が iOS 4.3 です)
iPhone シミュレーター (バージョン 4.3) を使用して iPad と iPhone の条件付きコード パスをテストすると、弱いリンクもNSClassFromString(@"UIPopoverController")
アプローチも期待どおりの動作をしません。
UIKit フレームワークの弱いリンクをテストするときは、必ず LLVM 2.1 コンパイラを使用し、UIKit フレームワークを [ターゲット] -> [ビルド フェーズ] -> [バイナリをライブラリにリンク] で [オプション] にします。(私が理解しているように、Xcode 4.1でそれを行う方法です)。
コードの実行
if ([UIPopoverController class]) {
...
_popover = [[UIPopoverController alloc] initWithContentViewController:controller];
...
}
iPhone シミュレーターでアプリケーションがクラッシュし、[UIPopoverController class]
が返されないことが示されますnil
。上記に置き換える[UIPopoverController class]
とNSClassFromString(@"UIPopoverController")
、同じクラッシュが発生します。
シミュレーターで実行しているときにこれらの条件付きチェックを機能させる方法を知っている人はいますか?