如何避免此功能导致内存泄漏?

约翰·史密斯

我正在尝试猜测特定文件的mime类型,并且我有以下代码:

- (NSString *)fileMIMEType:(NSString *)file {
  CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[file pathExtension], NULL);
  CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType);
  CFRelease(UTI);
  return (__bridge NSString *)MIMEType;
}

在分析期间,Xcode(5)抱怨存储在“ MIMEType”中的对象存在潜在泄漏。

如何重写此实用程序方法以避免泄漏?

CRD

您要创建的CFStringRef内容不受ARC的管理,您需要将该引用的所有权转让给ARC,以便在需要时将其释放。为此__bridge_transfer__bridge您所使用的不会转让所有权,这会导致泄漏。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章