iPhone:如何使用MACRO检查设备?

时间:2011-11-30 11:33:44

标签: iphone objective-c ios cocoa-touch

我想使用iPhone检查设备是iPad还是macro

我有一个文件Constant.h,我使用#define给出了值。

现在,我想使用#ifdef #endif检查设备。

只能在.m文件中使用Follwing方法。

但我只有一个.h

- (BOOL) isPad{ 
   #ifdef UI_USER_INTERFACE_IDIOM
        return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
   #else
       return NO;
   #endif
}

所以上面的方法对我没用?

有没有办法做到这一点?还是其他任何方式?

3 个答案:

答案 0 :(得分:5)

我对这个问题的答案很简单。

#define isiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO)

如果设备是iPad,则返回1,如果设备是iPod或iPhone,则返回0。

答案 1 :(得分:3)

您无法通过宏检查它,因为在编译期间会扩展宏。所以你需要在编译时知道设备类型。

如果要在运行时支持这两个设备,则需要检查设备类型并使用适当的常量集。

答案 2 :(得分:0)

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
    UIDevice* thisDevice = [UIDevice currentDevice];
    if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {
    // etc.
    }
 #endif