我正在尝试猜测特定文件的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;
}
在Analyze期间Xcode(5)抱怨存储在'MIMEType'中的对象可能存在泄漏。
如何重写此实用程序方法以避免泄漏?
答案 0 :(得分:1)
您正在创建一个不受ARC管理的CFStringRef
,您需要传输对ARC的引用的所有权,以便在需要时将其释放。为此,您使用__bridge_transfer
,您使用的__bridge
不会转让所有权,从而导致泄密。