我有一个通用应用程序,在代码的几个部分中,我必须检查设备类型以呈现UI元素。
之前,我有一个bool变量(isDeviceIPad
),在viewDidLoad
分配以完成工作,但遇到了一些未正确分配变量的情况(我的View Controller有一个复杂的流程) 。
所以相反我认为我可能会使用宏,所以isDeviceIPad
宏(而不是bool变量)永远不会出错:
#define isDeviceIPad ([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPad)
可以像这样使用宏吗?我不应该(性能考虑因素等)的任何原因?
答案 0 :(得分:4)
该宏工作正常,没有额外的性能问题。编译应用程序时,宏的每次使用都将替换为宏的定义。这就像是一次大搜索和替换。
虽然您应该使用:
#define isDeviceIPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
答案 1 :(得分:0)
这是正确的语法(在填充或电话之前没有空格&& no'i',并且没有额外的标点符号)
#define isDeviceIPad UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad
#define isDeviceIPhone UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone