【问题标题】:Object Leaked in objective C [duplicate]目标C中的对象泄漏[重复]
【发布时间】:2016-08-23 06:22:29
【问题描述】:

当我执行“构建和分析”时,XCode 会给我以下警告:

存储到“字符串”中的对象的潜在泄漏

- (NSString *)getUUID
{
NSString *UUID = [EA_APP_CONSTANT getUserDefaultsValueForKey:@"uniqueID"];
if (!UUID) {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    UUID = [(__bridge NSString*)string stringByReplacingOccurrencesOfString:@"-"withString:@""];
    [EA_APP_CONSTANT setUserDefaultsValue:UUID forKey:@"uniqueID"];
}
return UUID;
}

我该如何解决这个问题?

【问题讨论】:

  • 你永远不会释放string。但是你为什么要这样做呢?为什么不NSUUID.new.UTF8String;

标签: ios objective-c memory-leaks uuid


【解决方案1】:

您需要致电CFRelease(string);

- (NSString *)getUUID
{
NSString *UUID = [EA_APP_CONSTANT getUserDefaultsValueForKey:@"uniqueID"];
if (!UUID) {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    UUID = [(__bridge NSString*)string stringByReplacingOccurrencesOfString:@"-"withString:@""];
    [EA_APP_CONSTANT setUserDefaultsValue:UUID forKey:@"uniqueID"];

    CFRelease(string);
}
return UUID;
}

【讨论】:

  • 感谢@iSashok 解决了它。
  • 不客气!请将您的问题标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 2012-07-08
  • 1970-01-01
  • 2013-06-15
  • 2023-03-05
相关资源
最近更新 更多