Skip to content

Instantly share code, notes, and snippets.

@zwaldowski
Last active December 22, 2015 20:29
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save zwaldowski/6526790 to your computer and use it in GitHub Desktop.
Save zwaldowski/6526790 to your computer and use it in GitHub Desktop.
extern uint32_t dyld_get_program_sdk_version() WEAK_IMPORT_ATTRIBUTE;
extern BOOL DZApplicationUsesLegacyUI(void)
{
static dispatch_once_t onceToken;
static BOOL legacyUI = NO;
dispatch_once(&onceToken, ^{
uint32_t sdk = __IPHONE_OS_VERSION_MIN_REQUIRED;
if (dyld_get_program_sdk_version != NULL) {
sdk = dyld_get_program_sdk_version();
}
Boolean hasLegacy;
// The OS may set these at will
Boolean forceLegacy = CFPreferencesGetAppBooleanValue(CFSTR("UIUseLegacyUI"), kCFPreferencesCurrentApplication, &hasLegacy);
Boolean requireModern = CFPreferencesGetAppBooleanValue(CFSTR("UIForceModernUI"), kCFPreferencesCurrentApplication, NULL);
legacyUI = ((sdk < 0x70000) && (!(hasLegacy && forceLegacy) || requireModern));
});
return legacyUI;
}
@steipete
Copy link

Here's my take on it. Simpler, but not 100% sure this will always work. https://gist.github.com/steipete/6526860

@0xced
Copy link

0xced commented Dec 16, 2013

Beware: don’t default to __IPHONE_OS_VERSION_MIN_REQUIRED because

  1. It’s not the same as the SDK.
  2. It doesn’t use the same version encoding: 70000 (decimal) vs 0x70000 (hexadecimal).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment