代码之家  ›  专栏  ›  技术社区  ›  Justin Meiners

如果iphone在ipad上运行,它会运行吗?

  •  3
  • Justin Meiners  · 技术社区  · 15 年前

    这张支票在iPad和iPhone上有效吗?我想我只是对在iPad上使用“iphone”一词感到困惑。我还需要检查ipad操作系统的版本吗,或者宏是指一般的iOS版本吗?

    #if __IPHONE_4_0
    // Do stuff
    #elif __IPHONE_3_0
    // Do 3.0 stuff
    #endif
    
    2 回复  |  直到 12 年前
        1
  •  8
  •   Community CDub    8 年前

    问题在于 __IPHONE_3_0 类似的是,即使目标是其他iOS版本,它们也是定义的;它们是版本标识常量,而不是标识目标iOS版本的常量。使用 __IPHONE_OS_VERSION_MIN_REQUIRED

    #if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
    #elif __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_0
    #else
    #endif
    

    甚至:

    #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000
    #elif __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000
    #else
    #endif
    

    为了避开评论中提到的错误 How to target a specific iPhone version? __IPHONE_OS_VERSION_MAX_ALLOWED 在有限的情况下也可能有用。

    而且,是的,不管应用程序将在哪个设备上运行。这些常量由编译器定义,设备上不存在。一旦预处理器运行,就不会留下宏。尽管设备本身存在差异,但iPhone和iPad都运行iOS,这正是你真正要瞄准的目标。

        2
  •  1
  •   Moshe    15 年前

    您发布的代码是一个编译器指令。这意味着它不会在iPad或iPhone上运行。当你构建你的应用程序二进制文件时,它会被处理。顺便说一句,如果你是为ipad而建,那么你是为3.2而不是3.0或4.0而建。

    如果你用3_2或4_2而不是3_0或4_0,它应该会起作用。

    祝你好运。