iOS – 条件编译(xcode)

我已经创build了一个额外的iPad的目标,原来是一个iPhone应用程序。

从苹果的文档:“在几乎所有情况下,你会想要定义一个新的视图控制器类来pipe理你的应用程序接口的iPad版本,特别是如果该接口是完全不同于你的iPhone接口,你可以使用条件编译协调不同视图控制器的创build“。

但是他们没有给出任何例子或细节什么条件编译是。 任何人都可以举个例子吗? 我在哪里可以做到这一点?

编辑:我已经尝试在iPad目标中定义以下C标志:-D USE_IPAD,-DUSE_IPAD。 无论哪种方式,这段代码总是导致IPHONE获取日志:

#ifdef USE_IPAD NSLog(@"IPAD"); #else NSLog(@"IPHONE"); #endif 

我错过了什么?

另一种可能比条件编译更可取的方法是if else语句:

 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // iPad code } else { // iPhone or iPod Touch code } 

我更喜欢这个条件编译,因为我觉得它更容易维护和更less的线路噪声。

条件编译是使用编译器指令(或编译器标志)来控制编译的地方。

 #ifdef SOME_CONDITION //This will only be compiled if SOME_CONDITION is defined as a compiler flag #else //Otherwise, this code will compile. #endif 

您可以在您的项目设置中定义编译器指令。 右键点击目标 (例如创build多个目标,一个用于iPhone,一个用于iPad),然后点击获取信息。 然后向下滚动到其他C标志 。 您可以在那里添加(a)标志。

替代文字

编辑:

看来我犯了和你一样的错误。 一些快速的谷歌search引导我到苹果文档和 这篇博客文章说,你可能需要添加一个新的领域的build设设置。