在运行时确定iPhone设备

时间:2010-08-14 14:38:44

标签: iphone runtime device

是否可以在运行时对iPhone设备执行运行时检查? 它必须能够将iPhone 4与其他iPhone / iPod touch型号区分开来。 任何做同样事情的解决方法也可以。

2 个答案:

答案 0 :(得分:4)

为了同样的目的,我使用了这样的代码:

if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;
return NO;

只有iOS 4.x +设备支持UIScreen scale实例方法。由于iPhone4不运行iOS 3,我们可以立即排除这些问题。接下来,我们检查比例因子是否为2.0,如果是,我们知道它有视网膜显示。

虽然这不是明确的(苹果可能会在明天发布另一个视网膜设备),但它会测试重要的“模型” - 即,你可以从提供@ 2x图像和标准图像的网络服务中获取图像,这就是我正在做的事情,这意味着您需要手动编写缩放图像支持,而不是像UIImage的-imageNamed:那样免费获取本地文件。

答案 1 :(得分:0)

您可以通过UIDevice类获取确切的模型:

[[UIDevice currentDevice] model]

此处以及其他一些方法记录在此处:http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

但要小心,不要将硬件模型与iOS版本混淆。如果要为支持它们的设备提供额外/不同的功能,最好使用respondsToSelector:方法或NSClassFromString函数检查该特定接口是否可用。

小心使用NSClassFromString函数,因为某些类作为早期SDK中私有API的一部分存在,具有完全不同的接口。