1

次のコードを使用して、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 **') にキャストする互換性のない型

それは私を夢中にさせ始めています...私が何をしようとしても、エラーをなくすことはできません。何か案は?

4

2 に答える 2