Iphone 如何检查iOS设备是否为视网膜显示器iPod touch?

Iphone 如何检查iOS设备是否为视网膜显示器iPod touch?,iphone,ios,ipod-touch,Iphone,Ios,Ipod Touch,是否有一种安全的方法来确定设备是否属于特定型号?例如,我必须知道用户使用的设备是否是视网膜显示器iPod touch。我可能会尝试以下方法: NSRange r = [[[UIDevice currentDevice] model] rangeOfString:@"iPod"]; float s = [[UIScreen mainScreen] scale]; if (r.location != NSNotFound && s > 1.5f) { // retin

是否有一种安全的方法来确定设备是否属于特定型号?例如,我必须知道用户使用的设备是否是视网膜显示器iPod touch。

我可能会尝试以下方法:

NSRange r = [[[UIDevice currentDevice] model] rangeOfString:@"iPod"];
float s = [[UIScreen mainScreen] scale];

if (r.location != NSNotFound && s > 1.5f) {
    // retina iTouch
}
+(BOOL) isRetinaiPod
{
    return [[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"] && [UIScreen mainScreen].scale >= 2.0f;
}
但是,您可以使用以下内容返回设备名称:

+ (NSString *) deviceName 
{
    struct utsname u;
    uname(&u);
    return [NSString stringWithUTF8String:u.sysname];
}

你为什么要知道这些?最好检查单个设备的功能,而不是特定的型号;uname&u;返回u这是错误的:struct utsname不是NSString。感谢您的更正。的确如此。我的代码在没有它的情况下工作,但我很不确定为什么!也许你从来没有调用过这个方法——如果你调用了它,它会与segfaul崩溃。:)我实际上是在返回
@(u.machine)
。复制错误。我已经修改了我实际使用的内容(我缓存了值)啊,这很好:)是的,复制错误很烦人,也发生在我身上。