Я огляделся, чтобы узнать, как я могу узнать, на каком iPhone работает приложение (iPhone 3G, iPhone3GS, iPhone 4), чтобы делать дополнительные вещи в зависимости от устройства. Предпочтительный способ в основном что-то вроде этого:Как определить, на каком iPhone работает приложение?
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *name = (char *)malloc(size);
sysctlbyname("hw.machine", name, &size, NULL, 0);
NSString *machine = [NSString stringWithCString:name];
free(name);
if([machine compare:@"iPhone3,1"]==NSOrderedSame){
//iPhone 4
}else if([machine compare:@"i386"]==NSOrderedSame){
//Simulator
}else{
//iPhone 3GS, 3G...
}
NSLog(@"Device %@", machine);
Это работало отлично до сих пор, но теперь мы обновили X-Code и симулятор. Таким образом, можно запустить симулятор как iPhone 4, iPhone3GS или iPhone3G. Как это можно обнаружить во время выполнения? Какие-либо решения или обходные пути?
Редактировать: Даже такое решение, как здесь http://iphonedevelopment.blogspot.com/2009/05/device-detection.html, конечно, не работает должным образом, так как симулятор может быть также iPhone4!