2011-02-09 5 views
0

Я огляделся, чтобы узнать, как я могу узнать, на каком 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!

ответ