Я немного смущен. Везде, где я читал, предположим, что при использовании ARC вам все равно нужно освободить основные объекты фундамента, что имеет смысл, ARC не справляется с ними. Тем не менее, у меня есть метод, который использует некоторые методы/объекты CF, которые я использовал CFRelease
, но это привело к сбою приложения. Раскомментирование моего CFRelease
устраняет проблему, но затем я предполагаю, что у меня есть утечка памяти?
Может кто-нибудь объяснить, какие вещи нужно выпускать, а какие нет или что-то еще не так с этим кодом?
+ (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;
}
Три закомментированных вызова CFRelease
исправляют проблему, как упоминалось, но я знаю, что это неправильно. Что я должен делать?