好的,使用Macro来识别iOS设备?

时间:2012-10-22 15:08:19

标签: ios xcode macros

我有一个通用应用程序,在代码的几个部分中,我必须检查设备类型以呈现UI元素。 之前,我有一个bool变量(isDeviceIPad),在viewDidLoad分配以完成工作,但遇到了一些未正确分配变量的情况(我的View Controller有一个复杂的流程) 。

所以相反我认为我可能会使用宏,所以isDeviceIPad宏(而不是bool变量)永远不会出错:

#define isDeviceIPad ([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPad)

可以像这样使用宏吗?我不应该(性能考虑因素等)的任何原因?

2 个答案:

答案 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