Создание пакета форматирования данных Xcode для пользовательских объектов Obj-C - PullRequest
5 голосов
/ 19 июня 2009

Чтобы упростить отладку некоторых пользовательских объектов Objective-C в окне отладчика XCode, я создал набор строк форматирования данных для каждого из объектов, используя документацию Apple, связанную с . и встроенные средства форматирования данных Xcode в качестве руководства.

Мои пользовательские сводные строки отлично работают, если я помещу их в / Developer / Library / Xcode / CustomDataViews / с форматерами данных, которые поставляются с Xcode. Однако я бы предпочел этого не делать, поскольку пользователь может не иметь прав записи в этот каталог, и смешивание пользовательских форматеров со встроенными может привести к путанице. Аналогично, добавление моих собственных записей в ~ / Библиотека / Поддержка приложений / Apple / Инструменты разработчика / CustomDataViews / CustomDataViews.plist также работает, но этот файл предназначен для пользовательских значений, которые переопределяют значения по умолчанию, и его записей. забиты изменениями в графическом интерфейсе отладчика Xcode. Что я действительно хочу, так это иметь возможность разместить файл с моими форматерами данных в таком месте, чтобы XCode распознал их, но пользователи по-прежнему могут выборочно переопределять мои настройки (в другом файле), если это необходимо.

Проблема в том, что когда я создаю пакет (по примеру этот пример кода Apple ) и устанавливаю его (либо в / Developer / Library / Xcode / CustomDataViews / , либо любой Библиотека / Поддержка приложений / Apple / Инструменты разработчика / CustomDataViews / путь), Xcode не распознает и не использует пользовательские средства форматирования.

Документация по специфике комплектов форматирования данных несколько скудна (в основном это один заголовочный файл в Xcode.app / Contents / PlugIns / GDBMIDebugging.xcplugin ), возможно, потому, что эта функциональность особенности заголовка Xcode. ;-) Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

4 голосов
/ 08 июля 2009

Я недавно смог вернуться к этому, и я думаю, что нашел ответ.

Я уже знал, что в комплект средства форматирования данных должен быть встроен файл списка свойств с именем " Contents / Resources / *. Plist ". Однако для фактической работы пакета он также должен включать исполняемый файл с тем же именем, что и пакет в каталоге Contents / MacOS / . Насколько я могу судить, даже полностью пустой файл foo.c достаточно, если вы компилируете и связываете двоичный файл. Мне даже не нужно было трогать Info.plist для стандартного проекта CFPlugin Bundle в XCode, просто включить CustomDataViews.plist в целевые ресурсы.

Поскольку мне не нужно определять функции C для отображения каких-либо объектов и структур, с которыми я имею дело, гораздо проще просто поместить файл plist (подойдет любое имя - мое - CHDataStructures.plist) в одно из двух мест:

  • ~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/
  • /Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

Простые файлы plist имеют меньший размер, их легко создавать и легко модифицировать. Кроме того, в отличие от использования пакетов, мне не нужно было перезапускать Xcode, когда я добавил, удалил или изменил plist; достаточно было просто начать новый сеанс отладки, чтобы новые средства форматирования данных были обновлены. Я думаю, что я только создавал пакет, потому что это то, что показал пример кода, но я не могу определить какие-либо преимущества для своего сценария, поэтому я придерживаюсь plist.

2 голосов
/ 19 июня 2009

Начиная с Xcode 2.5 и 3.0, места для таких вещей изменились, чтобы поддерживать несколько версий Xcode, сосуществующих в одной системе. Вы должны поместить свои собственные средства форматирования данных в каталог "Library/Application Support/Developer/Shared/CustomDataViews" в локальном (/) или пользовательском (~) домене; тогда они должны быть доступны при следующем запуске Xcode.

Shared в указанном выше пути может быть номером версии, например 3.0 или 3.1, если вы создаете что-то определенное для конкретной версии XCode.

...