存储在“string”中的对象的潜在泄漏

我试图运行代码,但它使用静态分析器报告内存泄漏。 在这条线上作为一个对象的潜在泄漏存储到“string”

return (__bridge NSString *)string; 

这里是整个方法:

 +(NSString *)GUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return (__bridge NSString *)string; } 

让我知道如果别人需要更多的信息。

尝试这个:

 +(NSString *)GUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); NSString *str = (__bridge NSString *)string; CFRelease(string); return str; } 

您的桥接转换不会转移所有权,因此保留计数会增加。 改用__bridge_transfer。

对于iOS 6和更高版本使用:

 NSString *guid = [[NSUUID new] UUIDString]; NSLog(@"guid '%@'", guid); 

NSLog输出:

guid'C2635D23-557B-42C9-BE90-6E6001CC09F1'