次のコードを使用して、Objective-C (Mac OS X Cocoa アプリケーション) でファイルのファイル タイプを取得しています。
NSString *kind = nil;
NSURL *url = [NSURL fileURLWithPath:[path stringByExpandingTildeInPath]];
LSCopyKindStringForURL((CFURLRef)url, (CFStringRef*)&kind);
return kind ? kind : @"";
ただし、生成される唯一のエラーは次の行にあります。
LSCopyKindStringForURL((CFURLRef)url, (CFStringRef*)&kind);
言います:
'NSString *__strong *' から 'CFStringRef *' (別名 'const __CFString **') への C スタイルのキャストは、修飾子をキャストします。
いくつかの調査を行った後__bridge、ARC で NSString* から CFStringRef* へのキャストを有効にするには、キーワードが必要であることがわかりました。だから私はキーワードに固執し、生産しました:
LSCopyKindStringForURL((CFURLRef)url, (__bridge CFStringRef*)&kind);
現在、次のエラーが表示されます。
__bridge キャストで 'NSString *__strong *' を 'CFStringRef *' (別名 'const __CFString **') にキャストする互換性のない型
それは私を夢中にさせ始めています...私が何をしようとしても、エラーをなくすことはできません。何か案は?