objective C中的对象泄漏



当我执行"Build and analyze"时,XCode给了我以下警告:

存储在'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"];
}
return UUID;
}

如何解决这个问题?

您需要呼叫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;
}

最新更新