2012-08-15 48 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

相關問題