潜在的 iOS 内存泄漏问题与 CFUUIDBytes 相关

3

我有一个静态方法定义如下:

+(NSString*)getNewIdAsBase64
{
    // Grab new uuid
    CFUUIDRef originalUuid = CFUUIDCreate(nil);//create a new UUID
    //NSLog(@"Step a: original uuidObj = %@",originalUuid);
    CFUUIDBytes originalBytes = CFUUIDGetUUIDBytes (originalUuid);//ISSUE

    NSData* data88  = [NSData dataWithBytes: &originalBytes length: sizeof(originalBytes)];
    NSString* hugo = [data88 base64EncodedString];

    return hugo;

}

当我在我的项目上运行“Product->Analyze”时,被 //ISSUE 注释的代码会引发以下问题:
Potential leak of an object alocated on line 23 and stored into 'originalUuid'

我做错了什么,如何修复它?
谢谢
1个回答

4

即使您正在使用ARC,也需要释放您创建的对象:

+(NSString*)getNewIdAsBase64
{
    // Grab new uuid
    CFUUIDRef originalUuid = CFUUIDCreate(nil);//create a new UUID
    //NSLog(@"Step a: original uuidObj = %@",originalUuid);
    CFUUIDBytes originalBytes = CFUUIDGetUUIDBytes (originalUuid);//ISSUE

    NSData* data88  = [NSData dataWithBytes: &originalBytes length: sizeof(originalBytes)];
    NSString* hugo = [data88 base64EncodedString];

    CFRelease(originalUuid);
    return hugo;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接