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'

私は何を間違っていますか、どうすれば修正できますか?

ありがとう

4

1 に答える 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;

}
于 2012-10-17T15:08:29.357 に答える