Октябрь 2008:
я рекомендовал бы кэшировать его в статической переменной:
public static final class OsUtils
{
private static String OS = null;
public static String getOsName()
{
if(OS == null) { OS = System.getProperty("os.name"); }
return OS;
}
public static boolean isWindows()
{
return getOsName().startsWith("Windows");
}
public static boolean isUnix() // and so on
}
Тот путь, каждый раз, когда Вы просите OS, Вы не выбираете свойство несколько раз во время жизни Вашего приложения.
февраль 2016: 7 + несколько лет спустя:
существует ошибка с Windows 10 (который не существовал во время исходного ответа).
См." “os.name” Java для Windows 10? "
Наиболее полная категория UIDevice (оборудование), вероятно, это http://github.com/erica/uidevice-extension/ (Эрика Садун):
[[UIDevice currentDevice] platformType] // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"
Вы можете получить номер модели устройства, используя uname
из sys / utsname.h
. Например:
#import <sys/utsname.h>
NSString*
machineName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
Результат должен быть следующим:
@"i386" on the simulator @"iPod1,1" on iPod Touch @"iPod2,1" on iPod Touch Second Generation @"iPod3,1" on iPod Touch Third Generation @"iPod4,1" on iPod Touch Fourth Generation @"iPhone1,1" on iPhone @"iPhone1,2" on iPhone 3G @"iPhone2,1" on iPhone 3GS @"iPad1,1" on iPad @"iPad2,1" on iPad 2 @"iPad3,1" on iPad 3 (aka new iPad) @"iPhone3,1" on iPhone 4 @"iPhone4,1" on iPhone 4S @"iPhone5,1" on iPhone 5 @"iPhone5,2" on iPhone 5