0

我必须在具有基本 SDK 7.0 的项目中阅读 iOS 设备的 udid(我知道我不应该这样做,但我需要阅读它并且这identifierForVendor不是一个选项)。我只能在 iOS 6 设备上这样做,但uniqueIdentifier由于基础 SDK,该方法无法识别。由于我不知道如何在编译时确定 iOS 版本,所以我做了以下操作:

#define SYSTEM_IS_IOS_7 ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)
...
    if (!SYSTEM_IS_IOS_7) {
            SEL selector = NSSelectorFromString(@"uniqueIdentifier");
            if ([[UIDevice currentDevice] respondsToSelector:selector]) {
                NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
                                            [[[UIDevice currentDevice] class] instanceMethodSignatureForSelector:selector]];
                [invocation setSelector:selector];
                [invocation setTarget:[UIDevice currentDevice]];
                [invocation invoke];           
                NSString *udid = nil;
                [invocation getReturnValue:&udid];
                NSLog(@"%@", udid);
            }
    }

我在 iOS 6.1 上运行代码, udid 出现在控制台上,但应用程序在 之后立即崩溃,EXC_BAD_ACCESS控制台main.m上没有任何消息。知道为什么以及如何解决这个问题吗?

4

0 回答 0