我在一个通用应用程序上工作,它使用 UIPopoverController 的 iPad 版本。(基础 SDK 和部署目标都是 iOS 4.3)
当我使用 iPhone 模拟器(4.3 版)测试 iPad 和 iPhone 的条件代码路径时,弱链接和NSClassFromString(@"UIPopoverController")
方法都没有给出预期的行为。
在测试 UIKit 框架的弱链接时,我确保使用 LLVM 2.1 编译器并在“Target->Build Phases->Link Binary with Libraries”中将 UIKit 框架设为“可选”。(据我了解是在 Xcode 4.1 中执行此操作的方法)。
运行代码
if ([UIPopoverController class]) {
...
_popover = [[UIPopoverController alloc] initWithContentViewController:controller];
...
}
iPhone 模拟器上的应用程序崩溃,表明[UIPopoverController class]
不返回nil
. [UIPopoverController class]
用上面的替换NSClassFromString(@"UIPopoverController")
,会导致同样的崩溃。
有谁知道在模拟器上运行时如何使这些条件检查工作?