Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在构建一个通用应用程序,并在 prefix.pch 中包含以下宏,以帮助快速识别类中的设备类型:
#define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
我很困惑为什么会这样。我的理解是 prefix.pch 是预编译的,因此 IS_IPAD 变量的值是在编译时设置的,而不是在运行时设置的,因此该值似乎总是针对编译应用程序的设备?或者是为 iPhone 和 iPad 编译的通用应用程序?
宏就像编译期间的全局搜索和替换。编译时,作为预处理的一部分,每个实例都会IS_IPAD被逐字替换。UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad然后编译文件。
IS_IPAD
UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
因此,您最终会在代码中进行所需的运行时检查。使用此宏只会减少您输入的次数。