我正在尝试运行代码,但在使用静态分析器时报告内存泄漏。 在这一行作为存储在'string'
中的对象的潜在泄漏return (__bridge NSString *)string;
这是整个方法:
+(NSString *)GUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
如果其他人需要更多信息,请告诉我。
答案 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'