存储在“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'