Существует как минимум три разных места, из которых ОС предоставит значок.
В одной ситуации NSWorkspace может помочь определить местоположение:
NSString* uti = [ws typeOfFile:@"/Users/egorr/Desktop/file.vwx" error:&error];
NSLog( @"UTI: %@", uti );
NSLog( @"UTI localized description: %@", [ws localizedDescriptionForType:uti] );
NSLog( @"UTI error description: %@",[error localizedDescription] );
NSURL* utiDeclarationURL = (NSURL*)UTTypeCopyDeclaringBundleURL( (CFStringRef)uti );
NSLog( @"UTI declaration URL: %@", utiDeclarationURL );
NSDictionary* utiDeclaration = (NSDictionary*)UTTypeCopyDeclaration( (CFStringRef)uti );
NSLog( @"UTI declaration: %@", utiDeclaration );
Это не совсем даст путь к значку, но он получит приложение, из которогообъявление пришло для UTI.
Значок также может быть предоставлен из плагина Quick Look, и выход из qlmanage может быть использован для определения, так ли это.
Пользователь может, вВ окне «Информация» программы Finder установите приложение, которое они предпочитают, для всех файлов данного «типа».Например, можно установить типы текстовых файлов, которые всегда открываются в TextMate.Приложение TextMate предоставляет настраиваемые значки файлов для всех типов файлов, которые оно может сохранять. После внесения этого изменения в окнах получения информации Finder все файлы этого типа будут иметь значок, предоставленный TextMate и зарегистрированный в UTI.Чтобы определить, так ли это, нужно взглянуть на базу данных служб запуска - lsregister -dump