Приложения в OS X, которые могут открывать файлы для запуска своих приложений, часто позволяют пользователю выбрать приложение, которое откроет файл. Примером может служить Finder.Как реализовать контекстное меню «Открыть с» в OS X
Я до сих пор неясно, какое наилучшее решение для реализации этого. Проблемы - это производительность и отображение значка приложения.
Во-первых, чтобы получить список приложений, я нашел только LSCopyApplicationURLsForURL().
Основная трудность для меня теперь - получить значки приложений. Все, что у меня есть, это URL-адреса (пути) к приложениям. Единственный способ получить значки - создать объект CFBundle, а затем прочитать plist приложения, чтобы получить данные значка. Но это, похоже, вызывает много дискового доступа, и я мог представить, что это будет довольно неэффективно, если приложение расположено на удаленном файловом сервере.
Я считаю, что есть также кэшированная база данных о приложениях, которая включает в себя значки и отображаемые имена (без расширения) и т. Д. Но где API для этого?
Примечание: приложение основано на углероде, но при необходимости я могу использовать функции какао (NS ...). Также будет оценена поддержка 10,5, даже 10,4.