2012-08-15 46 views

回答

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

if (r.location != NSNotFound && s > 1.5f) { 
    // retina iTouch 
} 
2

我可能会尝试这样的事:

+(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]; 
} 
+0

'struct utsname u; uname(&u); return u;'这是错误的:struct utsname不是一个NSString。 – 2012-08-15 10:54:32

+0

感谢您的更正,所以是这样。我的代码没有这个工作,但我很不确定为什么! – 2012-08-15 12:28:43

+0

也许你没有调用该方法 - 如果你打电话给它,它会碰到一个segfaul。:) – 2012-08-15 12:30:31

相关问题