Ipad iOS-条件编译(xcode)

Ipad iOS-条件编译(xcode),ipad,ios,conditional,compilation,Ipad,Ios,Conditional,Compilation,我为最初的iphone应用程序创建了一个额外的iPad目标 从苹果文档: “在几乎所有情况下,您都希望定义一个新的视图控制器类来管理应用程序界面的iPad版本,尤其是当该界面与iPhone界面完全不同时。您可以使用条件编译来协调不同视图控制器的创建。” 但是他们没有给出任何关于什么是条件编译的例子或细节。有人能举个例子吗?我在哪里做这个 编辑: 我曾尝试在iPad目标中定义以下C标志:-D USE_iPad,-DUSE_iPad。 无论哪种方式,此代码都会导致IPHONE被登录: #ifdef

我为最初的iphone应用程序创建了一个额外的iPad目标

从苹果文档: “在几乎所有情况下,您都希望定义一个新的视图控制器类来管理应用程序界面的iPad版本,尤其是当该界面与iPhone界面完全不同时。您可以使用条件编译来协调不同视图控制器的创建。”

但是他们没有给出任何关于什么是条件编译的例子或细节。有人能举个例子吗?我在哪里做这个

编辑: 我曾尝试在iPad目标中定义以下C标志:-D USE_iPad,-DUSE_iPad。 无论哪种方式,此代码都会导致IPHONE被登录:

#ifdef USE_IPAD

        NSLog(@"IPAD");

    #else

        NSLog(@"IPHONE");

    #endif
我缺少什么?

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

#ifdef SOME_CONDITION

//This will only be compiled if SOME_CONDITION is defined as a compiler flag

#else

//Otherwise, this code will compile.

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

编辑:


看来我犯了和你一样的错误。通过谷歌快速搜索,我找到了一个新字段,上面说您可能需要在构建设置中添加一个新字段

另一种可能优于条件编译的方法是直接的
if-else
语句:

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

与条件编译相比,我更喜欢这种编译,因为我发现它更易于维护,而且行干扰更少。

但是,我应该在哪个目标中定义C标志?iPhone或iPad目标?好吧,你可以为每个目标创建一个目标,然后在iPhone目标中指定iPhone。在iPad中,您可以指定iPad。或者,您可以在任意一个中指定它,只需将
#else
设置为另一个。