【问题标题】:Potential iOS memory leak with CFUUIDBytesCFUUIDBytes 的潜在 iOS 内存泄漏
【发布时间】:2012-10-17 14:56:27
【问题描述】:

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

+(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'

我做错了什么,我该如何解决?

谢谢

【问题讨论】:

    标签: objective-c ios memory-leaks


    【解决方案1】:

    即使您使用 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;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多