【发布时间】:2011-02-06 19:32:22
【问题描述】:
我编写了一个 iPhone 和 iPad 通用应用程序,它在 Xcode 上的 iPad 模拟器中运行良好,但我现在想测试 iPhone 的功能。我似乎无法使用此代码运行 iPhone 模拟器,因为它始终默认为 iPad?
相反,我尝试在设备上运行,但在它开始运行时出现以下错误:
dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
Referenced from: /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/Test
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/TEST
由于应用程序是通过编程而不是使用 XIB 构建的,我在 main.m 方法中使用以下行拆分了 2 个设备逻辑:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Pad");
}
else
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Phone");
}
从那时起,他们使用不同的 AppDelegate,我检查了我的标题以确保 UISplitView 从未使用过,也从未通过电话逻辑导入。
如何避免这个错误?有没有更好的方法来分割这个以编程方式创建的应用程序中的通用逻辑路径?
【问题讨论】:
-
你做得对,除了直接检查 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 检查此链接以获得不错的实用方法cocoabugs.blogspot.com/2010/09/…
-
以及如何找到对 4 之前不存在的新 API 的引用?很好的答案here
标签: iphone ios ipad ios-universal-app