私はiPad版のUIPopoverControllerを使用する普遍的なアプリケーションで作業します。 (基本SDKとデプロイメントターゲットの両方がiOS 4.3です)iPhoneシミュレータで実行中のUIPopoverControllerクラスの可用性の検出に関する問題
iPadとiPhone用の条件付きコードパスをテストするためにiPhoneシミュレータ(バージョン4.3)を使用すると、弱いリンクもNSClassFromString(@"UIPopoverController")
のアプローチも期待された動作をしません。
UIKitフレームワークの弱いリンクをテストするときは、LLVM 2.1コンパイラを確認し、UIKitフレームワークを 'Target-> Build Phases-> Link Binary with Libraries'で 'オプション'にしてください。 (私が理解するように、Xcode 4.1でそれを行う方法です)。 iPhoneシミュレータ上のコード
if ([UIPopoverController class]) {
...
_popover = [[UIPopoverController alloc] initWithContentViewController:controller];
...
}
を実行
は[UIPopoverController class]
がnil
を返さないことを示すアプリケーションがクラッシュします。 [UIPopoverController class]
を上記のNSClassFromString(@"UIPopoverController")
に置き換えると、同じクラッシュになります。
シミュレータで実行しているときに、これらの条件チェックを実行する方法を知っている人はいますか?
お返事ありがとうございます、私はあなたの提案が動作すると確信しています。しかし、あなたが使用しようとしている機能だけをテストする必要があるクラスの弱いリンクとテストの全体的なポイントではなく、機能が存在する(将来の)デバイスが存在する(想定されない)と仮定しない。このため、私は本当にデバイスではなく機能性をテストしたいと思っています。 – Jonas