Я оглянулся, чтобы узнать, как узнать, на каком iPhone запущено мое приложение (iPhone 3G, iPhone3GS, iPhone 4), чтобы выполнять дополнительные действия в зависимости от устройства.Предпочтительный метод был в основном примерно таким:
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!