ARC e CFRelease?

Estou um pouco confuso. Em todos os lugares que já li, sugiro que, ao usar o ARC, você ainda precise liberar os objetos básicos da fundação, o que faz sentido, o ARC não os gerencia. No entanto, eu tenho um método que usa alguns métodos CF / objetos que eu useiCFRelease ligado, mas isso fez com que o aplicativo travasse. Descomentando minhaCFReleases corrige o problema, mas então eu estou supondo que eu tenho um vazamento de memória?

Alguém poderia explicar quais coisas precisam ser liberadas e quais não, ou qualquer outra coisa que esteja errada com esse código?

+ (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;
}

Os três comentaramCFRelease chamadas corrigir o problema, como mencionado, mas eu sei que está errado. O que devo fazer?

questionAnswers(3)

yourAnswerToTheQuestion