Je suis un peu confus. Partout où je l'ai lu, suggèrent que lors de l'utilisation de l'ARC, vous avez encore besoin de libérer de base objets de la fondation qui fait sens, l'ARC n'a pas les gérer. Cependant, j'ai une méthode qui utilise des FC, les méthodes des objets que j'ai utilisé CFRelease
, mais qui ensuite entraîné l'application crash. Décommentant la ma CFRelease
s résout le problème, mais alors je suis en supposant que j'ai une fuite de mémoire?
Quelqu'un pourrait-il expliquer de quelles choses doivent libérer et qui ne le sont pas, ou tout autre chose qui ne va pas dans ce 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;
}
Les trois commenté CFRelease
des appels résoudre le problème comme mentionné, mais je sais que c'est faux. Que dois-je faire?