Исправить потенциальную утечку памяти в ARC - PullRequest
6 голосов
/ 20 марта 2012

Следующий вспомогательный метод синглтон-класса (SharedManager) может вызывать цикл сохранения. Получение предупреждений в статическом анализаторе: «Потенциальная утечка объекта, размещенного в строке ...» Как я могу исправить?

Я попытался сделать ivar uuid __weak, но при анализе все равно появляется предупреждение.

    NSString  *__weak uuid =  (__bridge NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject);

Спасибо

Быть вызванным в классе так:

myUUID = [SharedManager generateUUID];



+ (NSString *)generateUUID
{

 CFUUIDRef uuidObject = CFUUIDCreate(kCFAllocatorDefault);
 NSString  *uuid =  (__bridge NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject);
CFRelease(uuidObject);

  return uuid;

}

Ответы [ 2 ]

8 голосов
/ 13 апреля 2012

Вот способ освободить их:

- (NSString *) uuid
{
    CFUUIDRef uuidRef = CFUUIDCreate(NULL);
    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
    CFRelease(uuidRef);
    NSString *uuid = [NSString stringWithString:(NSString *)
    uuidStringRef];
    CFRelease(uuidStringRef);
    return uuid;
}

Источник: http://www.cocoabuilder.com/archive/cocoa/217665-how-to-create-guid.html

6 голосов
/ 20 марта 2012
NSString  *uuid =  (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject);

Это убирает предупреждение?

...