我正在构建一个通用应用程序,并在prefix.pch中包含以下宏,以帮助快速识别类中的设备类型:
#define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
我很困惑为什么这样做。我的理解是prefix.pch是预编译的,因此IS_IPAD变量的值是在编译时而不是运行时设置的,因此它的值似乎总是针对编译应用程序的设备?或者是为iPhone和iPad编译的通用应用程序?
答案 0 :(得分:3)
宏在编译期间就像全局搜索和替换。编译时,IS_IPAD
的每个实例都会被UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
替换为预处理的一部分。然后编译文件。
因此,您最终会在代码中进行所需的运行时检查。使用此宏只会减少您输入的内容。