ARC und CFrelease?

Ich bin etwas verwirrt. Überall wo ich gelesen habe, deuten darauf hin, dass bei der Verwendung von ARC müssen Sie die release-core-foundation-Objekte, die Sinn macht, ARC nicht verwalten. Allerdings habe ich eine Methode, die verwendet einige CF-Methoden/Objekte, die ich verwendet CFRelease auf, aber dann verursachte die app zum Absturz. Uncommenting meine CFReleases behebt das Problem aber dann habe ich ' m vorausgesetzt, ich habe da ein memory-leak?

Könnte mir bitte jemand erklären, welche Dinge loslassen müssen und welche nicht, oder alles andere, was falsch an diesem code?

+ (NSString *) fileExtensionForMimeType:(NSString *)type
{
    CFStringRef mimeType = (__bridge CFStringRef)type;
    CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType, NULL);
    CFStringRef extension = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);

    NSString *ext = (__bridge NSString *)extension;

    //CFRelease(mimeType);
    //CFRelease(uti);
    //CFRelease(extension);

    return ext;
}

Den drei auskommentiert CFRelease fordert, das Problem zu beheben, wie bereits erwähnt, aber ich weiß, es ist falsch. Was soll ich tun?

InformationsquelleAutor der Frage PaReeOhNos | 2012-12-28

Schreibe einen Kommentar