bpa*_*apa 10 iphone xcode build-process ipad
我正在开发一款我希望在iPhone和iPad上普及的新应用.我开始使用"创建基于窗口的应用程序"向导,它在"iPhone"和"iPad"组中创建了单独的应用程序代理.由于我已经非常熟悉iPhone开发,我做了我项目的那部分,现在我已经准备好做一些iPad的东西了.
所以...我开始通过向我的iPad委托添加UISplitViewController,将Active SDK切换到3.2,它的工作原理!但是当我切换回3.1.3并尝试在模拟器中运行它时,Build and Go失败了.对于初学者,我看到:
... path .../iPad/AppDelegate_Pad.h:13:错误:'UISplitViewController'之前的预期说明符限定符列表
我的Base SDK设置为3.2,部署目标设置为3.1.3.我觉得这就够了.但我也在文档中找到了有条件地编译的方法:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
MyIPadViewController* vc;
// Create the iPad view controller
#else
MyIPhoneViewController* vc;
// Create the iPhone view controller
#endif
Run Code Online (Sandbox Code Playgroud)
所以我到处都需要这样做吗?这似乎是一个可怕的很多代码来添加(我会得到在短时间内摆脱了4.0反正),所以我觉得我必须做一些错误的.而且,我甚至不知道它如何适用于@property或@synthesize声明之类的东西.
tl;博士问题的版本 - 我错过了某个地方的设置吗?
pro*_*rmr 39
我使用这个C函数来帮助保持代码简洁:
BOOL isPad() {
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}
Run Code Online (Sandbox Code Playgroud)
我做的另一件事,当我有iPhone和iPad的不同xib文件.我有一个stripPadSuffixOnPhone()函数,可以帮助保持代码更简单:
// Load/create the Delete table cell with delete button
self.deleteCell = [Utilities loadNib:stripPadSuffixOnPhone(@"DeleteCell~ipad")
ClassName:@"DeleteCell"
Owner:self];
Run Code Online (Sandbox Code Playgroud)
这样的事情可以使编码更简单,条件更少.仍然必须测试一切两次.
Ole*_*ann 23
恰恰相反.通用应用程序在iPhone和iPad上运行相同的二进制文件,因此您无法使用条件编译来区分这两个版本.但是您需要在文档中使用宏Apple引用:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad-specific code
} else {
// iPhone-specific code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13073 次 |
| 最近记录: |