Код в наконец блок будет выполняться независимо от того, существует ли исключение. Это входит очень удобное когда дело доходит до определенных функций обслуживания, которые необходимо всегда выполнять как заключительные соединения.
Теперь, я предположение , Ваш вопрос состоит в том, почему необходимо сделать это:
try
{
doSomething();
}
catch
{
catchSomething();
}
finally
{
alwaysDoThis();
}
, Когда можно сделать это:
try
{
doSomething();
}
catch
{
catchSomething();
}
alwaysDoThis();
ответ - то, что много времен код в Вашем операторе выгоды или повторно бросит исключение или убежит из текущей функции. С последним кодом, "alwaysDoThis ()"; вызов не выполнится, если код в операторе выгоды выпустит возврат или выдаст новое исключение.
Вы можете создать сценарий и привязать его к сочетанию клавиш:
Затем введите следующий сценарий:
#!/usr/bin/perl
while (<>) {
s/\s+$//;
print "$_\n";
}
Это невозможно в Xcode 3.2
Изменить:
Я ответил на этот вопрос так кратко, потому что нет способа сделать это должным образом .
Of Конечно, поскольку это программное обеспечение, вы можете делать все что угодно: начиная с хакерских атак с помощью диспетчера ввода или других способов внедрения кода до общесистемного перехвата клавиатуры, вы можете изменить свою локальную систему так, чтобы она могла делать что угодно в любое время. Вы можете настроить действие папки Applescript (arrgh) или использовать демон запуска и средство FSEvents для просмотра файлов исходного кода.
Вы также можете добавить пару сценариев в Xcode (пользовательские сценарии в меню, этапы сценария в target, настраиваемые действия в органайзере, есть даже очень неизвестная возможность сценария запуска), но все эти решения ошибочны, поскольку включают пользовательскую или настраиваемую настройку на машине пользователя.
I ' m не знает о решении, которое просто работает после проверки проекта в SCM. Я считаю, что есть необходимость в этом и подобных сценариях настройки, поэтому я зарегистрировал ошибку (радар 7203835, «Функция: больше триггеров пользовательских сценариев в рабочем процессе Xcode»). Я пока не получил никаких отзывов.
Вот полный текст записи радара:
Было бы полезно иметь больше мест для запуска скриптов в Xcode.
Примеры:
Предварительные скрипты сборки
] Сценарии предварительной сборки могут использоваться для создания предварительных условий, таких как файлы * .xcconfig или заголовки config.h. Это невозможно с «Фазами выполнения сценария сборки», поскольку отслеживание зависимостей происходит до запуска какой-либо фазы сборки.Пост-сценарии сборки
Аналогично предыдущему, но выполняется после сборки завершено (включая подписание кода и т. д.). Полезно для дополнительной упаковки, проверка достоверности и т. д.Скрипты до / после фиксации SCM.
Для проверки целостности проекта.Сценарий сохранения файла до и после завершения.
Чтобы проверить / изменить файл перед сохранением. Например, запустите cody beautifiersПользовательские действия проекта.
Я знаю, что организатор может определять произвольные действия. Но это индивидуальная функция для каждого пользователя (а не часть проекта). Я хотел бы определить действия, такие как сборка или очистка, которые отображаются в меню сборки и являются частью проекта.
Я использую плагин Google Toolbox для Mac Xcode , он добавляет параметр «Исправлять пробелы при сохранении», который удаляет конечные пробелы при сохранении. Я очень скучал по emacs.