对该项目进行代码分析并获得消息“引用计数的对象在发布后使用”在行[缺省值setObject:deviceUuid forKey:@“deviceUuid “];引用计数的对象在发布后使用
我看过这个话题 Obj-C, Reference-counted object is used after it is released? 但是找不到解决方案。 ARC禁用。
// Get the users Device Model, Display Name, Unique ID, Token & Version Number
UIDevice *dev = [UIDevice currentDevice];
NSString *deviceUuid;
if ([dev respondsToSelector:@selector(uniqueIdentifier)])
deviceUuid = dev.uniqueIdentifier;
else {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
id uuid = [defaults objectForKey:@"deviceUuid"];
if (uuid)
deviceUuid = (NSString *)uuid;
else {
CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL));
deviceUuid = (NSString *)cfUuid;
CFRelease(cfUuid);
[defaults setObject:deviceUuid forKey:@"deviceUuid"];
}
}
请帮忙找出原因。
我不明白“我的ARC项目”是什么意思。您是否启用了ARC或者您是否已禁用ARC? – 2012-04-01 17:05:12
对不起。 ARC禁用。 – EndyVelvet 2012-04-01 17:07:51
顺便说一句,你可能不应该使用调用UIDevice的uniqueIdentifier方法,因为它已被弃用,它的使用可能会导致你的应用程序在你提交到App Store时被拒绝(根据几个新闻网站) – 2012-04-01 17:27:00