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 minhaCFRelease
s 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?