使用基础SDK 7.0读取设备的udid

时间:2013-10-25 07:07:44

标签: ios exc-bad-access udid

我必须在基础SDK 7.0的项目中阅读iOS设备的udid(我知道我不应该这样做,但我需要阅读它并且identifierForVendor不是一个选项)。我必须在iOS 6设备上使用此功能,但由于基本SDK,无法识别方法uniqueIdentifier。由于我不知道如何在编译时确定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一起崩溃,控制台上没有消息。知道为什么以及如何解决这个问题?

0 个答案:

没有答案