我有点困惑。在我读过的任何地方,都建议在使用 ARC 时,您仍然需要发布有意义的核心基础对象,ARC 不管理它们。但是,我有一个方法使用了一些我使用CFRelease
过的 CF 方法/对象,但这会导致应用程序崩溃。取消注释我CFRelease
的 s 解决了这个问题,但我假设我有内存泄漏?
有人可以解释一下哪些东西需要发布,哪些不需要,或者这段代码有什么问题吗?
+ (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
如前所述,三个注释掉的调用解决了这个问题,但我知道这是错误的。我应该做什么?