存储在'string'中的对象的潜在泄漏

时间:2013-11-19 12:07:53

标签: ios objective-c memory-leaks

我正在尝试运行代码,但在使用静态分析器时报告内存泄漏。 在这一行作为存储在'string'

中的对象的潜在泄漏
return (__bridge NSString *)string;

这是整个方法:

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

如果其他人需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:7)

您的桥接演员表不会转让所有权,因此保留计数会增加。请改用__bridge_transfer。

答案 1 :(得分:3)

试试这个:

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

答案 2 :(得分:3)

对于iOS 6及更高版本,请使用:

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

NSLog输出:

  

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