Подтвердить что ты не робот

Xcode: возможно автоматическое создание заглушек для методов, требуемых интерфейсом протокола?

Исходя из фона Eclipse/Java, одна из моих любимых функций - возможность быстро заглушить все методы, требуемые интерфейсом. В Eclipse я могу выбрать "переопределить/реализовать" из исходного меню, чтобы генерировать методы заглушки для любого метода интерфейса.

Я хотел бы сделать то же самое в Objective-C. Например, если я объявляю класс, который реализует протокол "NSCoding", я хотел бы, чтобы Xcode автоматически генерировал методы, необходимые для реализации этого протокола. Это разочаровывает необходимость поиска, а затем копировать/вставлять подписи необходимых методов каждый Протокол, который я пытаюсь реализовать.

Я некоторое время пытался выяснить, возможно ли это, но пока не нашел ничего обещающего. Возможно ли это в XCode?

4b9b3361

Ответ 1

Accessorizer будет писать методы кодирования и декодирования для переданных ему ivars (протокол NSCoding и архивирование NSDocument). Он также будет генерировать строковые константы либо static, либо #define с пользовательским префиксом; copyWithZone:; и другие вещи, если вам нужно - все из простого ярлыка через Службы или с панели инструментов. Архивирование с ключом в Accessorizer

Ответ 2

Я считаю, что Accessorizer будет делать то, что вы хотите.

Ответ 3

Не самый тяжелый ответ, просто намекните:

Из коробки XCode не может.

Но AppCode может.

Он может делать это автоматически (с вашего разрешения, конечно).

Если некоторые методы протокола, помеченные как @required - AppCode, будут выделять реализацию и предложить реализовать эти методы.

example

@optional также доступны для автоматического использования (ярлык: элемент управления + I).

Ответ 4

Можно создать сценарии для элемента меню сценариев в AppleScript, Perl, Python, Ruby или любых других языках сценариев, которые входят в меню сценариев.

Вы можете разместить точку вставки в файле .m и найти script соответствующий файл .h. Найдите поддерживаемые протоколы и т.д....

MacTech опубликовал статью в 2007 году Скрипты меню Xcode

Ответ 5

Xcode 3.2 будет автозаполнять известные реализации методов. Другими словами, если метод объявлен где-то (например, в протоколе), когда вы начнете вводить его в файл .m, Xcode 3.2 автоматически закроет подпись метода для вас. Это не совсем то, о чем вы просили, но это очень удобно.

Ответ 6

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

Эрик. Если вы нашли другое решение, напишите, что вы нашли. Удивительно, что XCode еще не встроил в среду IDE.

Ответ 7

Поскольку принятая ответная ссылка не работает больше (и перенаправляется на объявление), здесь другое хорошее объяснение того, как использовать accessorizer для создания заглушек протокола.

Ответ 8

Основываясь на AllanCraig "Создайте @property, @synthesize и dealloc из декларации переменной" ruby ​​ script, я сделал один для создания экземпляров реализации из интерфейсных: http://pastebin.com/4T2LTBh6

Как использовать?

  • Установите script на свой XCode (оболочка Script) и назначьте для него ярлык (например, CMD + 5).
  • Выберите строки из файла интерфейса, в котором вы хотите сгенерировать реализацию, и нажмите горячую клавишу.
  • Ваш .m будет содержать выбранные вами методы.

Ответ 9

Я знаю, что это старый вопрос, но если вы хотите всегда видеть последние определения, просто щелкните правой кнопкой мыши на рассматриваемом классе и перейдите к определению. Здесь lyes все текущие не устаревшие функции, поэтому вы не полагаетесь на третью сторону, чтобы оставаться в курсе последних событий.

Ответ 10

В моем случае Стиль ниже меня очень помогает, в некотором смысле решил мою проблему.

Предположим, что у вас есть следующее объявление метода:

+(DBManager*)getSharedInstance;

Из файла реализации вы начинаете вводить + ge и xcode автоматически выбирает метод

+(DBManager*)getSharedInstance;