2012-03-19 26 views
6

Następująca metoda pomocnicza klasy singleton (SharedManager) może powodować zatrzymanie cyklu. Otrzymywanie ostrzeżeń w analizatorze statycznym: "Potencjalny wyciek obiektu przydzielonego w linii ..." Jak mogę to naprawić?Napraw potencjalny wyciek pamięci w ARC

Próbowałem zrobić ivar uuid __weak, ale ostrzeżenie nadal pojawia się, gdy analizuję.

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

Dzięki

miano w klasie tak:

myUUID = [SharedManager generateUUID]; 



+ (NSString *)generateUUID 
{ 

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

    return uuid; 

} 

Odpowiedz

6
NSString *uuid = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject); 

Czy to usunąć ostrzeżenie?

+0

Peter, tak, tak. Dzięki. Musisz zrozumieć, o co w tym wszystkim chodzi: __bridge_transfer. – Slinky

+0

Zobacz http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects.operands.casts –

+0

Perfect. Dzięki – Slinky