Этот учебник по созданию плагина Quicklook объясняет все хорошо, но суммируя:
Точки 1 и 2 связаны - по какой-то странной причине шаблон плагина Quicklook содержит только .c
файлы - как таковой, импорт заголовка Obj-C Foundation.h
вызывает ошибки.
Вы должны просто иметь возможность переименовывать файлы с .c
на .m
, и это будет работать как положено.
Мне непонятно, как я объявляю, какие файлы будет обрабатывать мой плагин
Вам нужно сделать две вещи - одна из них сказать, какой UTI (Uniform Type Identifier) ваш плагинобрабатывает (например, cc.arduino.pde
), изменяя указанную вами строку:
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>QLGenerator</string>
<key>LSItemContentTypes</key>
<array>
<string>cc.arduino.pde</string>
</array>
</dict>
</array>
... но вы также должны описать этот UTI (в основном, чтобы он мог сопоставить расширение файла с этим UTI)
Существует два слегка разных способа объявления UTI, которые описываются [как «Объявление новых унифицированных идентификаторов типов»]:
Ваши объявления UTI должны быть либо импортированы, либо экспортированы:
- экспортированный UTI declaration означает, что тип доступен для использования всеми другими сторонами.Например, приложение, которое использует собственный формат документа, должно объявить его как экспортированный UTI.
- Импортированное объявление UTI используется для объявления типа, которому не принадлежит пакет, но он хотел бы видеть доступным насистема.Например, скажем, программа для редактирования видео создает файлы в собственном формате, чей UTI объявлен в комплекте приложений.Если вы пишете приложение или плагин, который может читать такие файлы, вы должны убедиться, что система знает о проприетарном UTI, даже если само приложение для редактирования видео недоступно.Для этого ваше приложение должно повторно объявить UTI в своем собственном пакете, но пометить его как импортированное объявление.
Для плагина Quicklook вам, вероятно, понадобится «импортированное» объявление UTI вкоторый вы бы добавить что-то вроде этого в ваш Info.plist:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>cc.arduino.pde</string>
<key>UTTypeReferenceURL</key>
<string>http://www.example.com</string>
<key>UTTypeDescription</key>
<string>Arduino PDE file</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.c-source</string>
<string>public.text</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>pde</string>
</array>
</dict>
</dict>
</array>