如何在编译时区分iPod / iPhone / iPad设备信息?

时间:2011-11-01 13:37:34

标签: iphone

我的应用程序有很多cpu和内存受到影响。 因此必须初始化由变量除以的不同单位。但是我想在编译时而不是在运行时知道。 运行时间可以知道如何区分。 如何在编译时区分?

知道如何区分操作系统版本,我不知道区分设备的法律。

以下代码仅限于划分。但是,我想详细介绍设备信息。 (iPod Touch 3 / iPod Touch4 / iPhone3GS / iPhone4 / iPhone4S / iPad / iPad2)

#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_4_0
    const static NSTimeInterval TIME_INTERVAL = 0.3;
#elif __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_0
    const static NSTimeInterval TIME_INTERVAL = 0.1;
#endif

3 个答案:

答案 0 :(得分:2)

很明显,在编译时无法决定运行代码的设备。所有设备运行相同的可执行文件可以在编译时唯一可能的区别是armv6(比iPhone 3Gs更旧)和armv7之间的区别。

答案 1 :(得分:2)

您无法在编译时知道正在运行应用程序的设备 - 您编译应在所有设备上运行的单个应用程序。

答案 2 :(得分:0)

你可以这样做:

BOOL iPad = NO;
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200 )
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
    iPad = YES;
}
#else
isPad = NO;
#endif

但它只适用于OS 3.2或更高版本。它仍然没有在编译时解决,但它应该为您提供正确的设备。