Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

Copy link

commented Sep 11, 2013

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

@0xced

This comment has been minimized.

Copy link

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
You can’t perform that action at this time.