2

ファイルのUTIを取得して、特定の画像がRAW画像ファイルであるかどうかを確認しようとしています。次にUTTypeConformsTo()、画像のUTIが「public.camera-raw-image」に準拠しているかどうかを確認しますが、そうしようとするとUTTypeConformsTo()戻ります間違い。問題のコードは次のとおりです。

- (NSNumber*)bw_conformsToUTI:(NSString*)otherString
{
    Boolean conformsBoolean = UTTypeConformsTo((CFStringRef)self, (CFStringRef)otherString);
    NSNumber* conforms = [NSNumber numberWithBool:conformsBoolean];
    return conforms;
}

(メソッドは NSString のカテゴリとして記述されており、行はそのように分割されています。これは、デバッガーで、ブール値から BOOL への変換とビットの損失で何かおかしいことが起こっていないことを確認していたためです。conformsBoolean は間違いなくすべての 0 ビットとして返されます)

self が "com.canon.cr2-raw-image" で otherString が "public.camera-raw-image" の場合、これは YES を返すと思いますが、代わりに NO になります。「com.canon.cr2-raw-image」UTIが定義されている場所を追跡し、/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/RawCameraTypes.bundle/Info.plistで実際に定義されている場所を見つけましたcom.canon.cr2-raw-image が public.camera-raw-image に直接準拠することを指定します。これはエクスポートされた UTI ではなく、インポートされた UTI として宣言されていることに気付きましたが、私のアプリケーションは宣言を認識しているため (最初に を介してその文字列を取得したことが証明されているようにUTTypeCreatePreferredIdentifierForTag())、違いはないと思います。 .

ここで私がやっていること、または誤解していることに明らかに間違っていることはありますか?

4

0 に答える 0