I know that this is possible too late, and probably does not answer this question in any case, but I thought: βWhat the hellβ is a good code for defining device ranges, where in cases when you may need different functionality.
#import <sys/sysctl.h> -(BOOL)isANewerDevice{ size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; free(machine); NSString * ending = [platform substringFromIndex:[platform length]-3]; double convertedNumber = [[ending stringByReplacingOccurrencesOfString:@"," withString:@"."] doubleValue]; //Devices listed here: /questions/14934/identify-new-iphone-model-on-xcode-5-5c-5s if ([platform containsString:@"iPhone"]) { if (convertedNumber >= 7.1) { // 6 and above return YES; }else{ return NO; //less than a 6 (ie 5S and below) } }else if ([platform containsString:@"iPad"]){ if (convertedNumber >= 5.3) { //iPad Air 2 and above return YES; }else{ return NO; //iPad Mini 3 and below } } //Failsafe return NO; }
Link commented in code: Define a new iPhone model on xcode (5, 5c, 5s)
Note Due to the presence of containsString this will crash on iOS versions less than 8. For support <8.0, try using the following code to retro-match this function fooobar.com/questions/80811 / ...
Good luck
mylogon
source share