Die Freigabe CFStringRef nach dem Gießen zu NSString

Bin ich mit der Konvertierung eines Objective-C-Funktion, die wirft einen CFStringRef zu einem NSString so (wo FSEventStreamCopyDescription gibt eine CFStringRef):

return (NSString *)FSEventStreamCopyDescription(eventStream);

Jedoch bei der Analyse meiner Bewerbung, wurde mir gesagt, dass dies zu einem potentiellen Leck", aufgrund der Abwesenheit einer CFRelease nennen. Ich bin versucht zu umschreiben, die diese Funktion zur Vermeidung von Lecks. Was ist die richtige Art des Umgangs mit diesen? Ich habe zwei Möglichkeiten (die beide könnten falsch sein):

Option A:

CFStringRef ref = FSEventStreamCopyDescription(eventStream);
NSString *desc = [(NSString *)ref copy];
CFRelease(ref);

return [desc autorelease];

Option B:

CFStringRef ref = FSEventStreamCopyDescription(eventStream);
NSString *desc = [[NSString alloc] initWithString:(NSString *)ref];
CFRelease(ref);

return [desc autorelease];
InformationsquelleAutor ndg | 2011-05-10
Schreibe einen Kommentar