Recent Posts

Check iOS version

You can get the OS version using:

[[UIDevice currentDevice] systemVersion]

However, you should avoid relying on the version string as an indication of device or OS capabilities. There is usually a more reliable method of checking whether a particular feature or class is available. For example, you can check if UIPopoverController is available on the current device using NSClassFromString:

if(NSClassFromString(@"UIPopoverController")) {
    // Do something
}
Some classes, like CLLocationManager and UIDevice, provide methods to check device capabilities:

if([CLLocationManager headingAvailable]) {
    // Do something
}
Apple uses systemVersion in their GLSprite sample code, so my recommendation can't be absolute:

// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer
// class is used as fallback when it isn't available.
NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
    displayLinkSupported = TRUE;
If for whatever reason you decide that systemVersion is what you want, make sure to treat it as an string or you risk truncating the minor revision number (eg. 3.1.2 -> 3.1). As of iOS 8, NSProcessInfo includes a method for performing this version comparisons with less chance of error:

- (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version

No comments:

Post a Comment