少し混乱しています。私が読んだすべての場所で、ARCを使用する場合でも、意味のあるコアFoundationオブジェクトをリリースする必要があることを示唆していますが、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;
}
コメントアウトされた3つのCFRelease
呼び出しは、前述のように問題を修正しますが、それが間違っていることはわかっています。私は何をすべきですか?