Завершение кода для многопараметрических имен методов в XCode4
В XCode4 я обнаружил, что не могу сузить завершение кода для многопараметрических имен методов, где первая часть является обычной. Например, рассмотрим следующие методы из UITableViewDelegate
:
- tableView:viewForHeaderInSection:
- tableView:heightForHeaderInSection:
- tableView:accessoryTypeForRowWithIndexPath:
...
Список можно продолжить; Есть довольно много методов, которые начинаются tableView
, Если я наберу "tableView", список будет длинным и не будет быстро перемещаться. Если я наберу "tableView:", завершение кода будет завершено, как только я введу двоеточие (:). Если я набираю запуск, такой как "tableViewview", завершение также завершается, предположительно, поскольку оно больше не соответствует буквально первой части имени метода.
Есть ли какой-нибудь способ завершить работу с помощью клавиатуры в таком списке, не прибегая к наведению мышки или выбиванию случайного числа нажатий клавиш со стрелками для навигации по длинному списку? Мне трудно поверить, что завершение кода для многопараметрических методов Objective-C настолько ограничено, но ни эксперименты, ни документация до сих пор не пролили свет.
Обновление для уточнения: выше я имею в виду завершение объявления метода (например, в файле.m), а не вызова метода. Для вызовов методов XCode 4.x выполняет завершение для каждой части параметра метода независимо; это прекрасно работает Приведенная выше проблема относится только к объявлениям, обычно при начале записи новой реализации метода в файле.m.
3 ответа
Кажется, что ожидаемое вами поведение (к сожалению) не реализовано в Xcode. Тем не менее, я нашел частичное решение: завершение кода работает, когда вы указываете полную первую часть многопараметрического метода, т.е. если вы набираете это (с пробелом в конце)
- tableView:(UITableView *)tableView
и нажмите клавишу ESCAPE, появится диалоговое окно завершения кода, и вы сможете продолжать вводить оставшуюся часть имени метода.
Вы, наверное, задаетесь вопросом:
"О, боже, мне действительно нужно вводить эту длинную преамбулу, чтобы завершить код?"
Отрывки кода на помощь! Вам просто нужно один раз ввести преамбулу и преобразовать ее в фрагмент. Я обнаружил, что лучше настроить его следующим образом, не забудьте добавить пробел в конце части кода, это облегчит задачу.
Как использовать то, что вы только что создали? В вашем.m файле начните печатать tabl
и XCode позволит вам автозаполнение фрагмента для вас. Как только преамбула размещена, нажмите ESC, чтобы открыть список автозаполнения.
Это решение не очень надежно, так как вам нужно создать фрагмент для каждого метода, состоящего из нескольких частей, который вы хотите использовать, но он экономит время и не так много имен методов, состоящих из нескольких частей, которые имеют одинаковый префикс.
Меня эта проблема раздражает довольно долго. Теперь я могу убедиться, что нет способа сделать это даже в новейшем Xcode 5, я отправил отчет об ошибке:
Завершение объявления многопараметрического метода в XCode
Пожалуйста, сделайте это, если хотите.
Извините, это не работает так, как я упомянул с заглушками протоколов, как вы хотели в своем обновлении. Для этого я использую Accessorizer, приложение в магазине приложений Mac, чтобы полностью реализовать объявление методов вашего делегата / протокола, которые вы хотите реализовать. Надеюсь, что поможет немного.
Старый пост:
Я использую Tab ⇥ для этого. У меня часто бывает такой пример: вы хотите использовать один из многих методов init в завершении кода.
Тогда вы не хотите прокручивать вниз или использовать много нажатий клавиш, чтобы выбрать правильный метод.
Хит я > Хит Tab ⇥ > init
выполнен.
Нажмите Escape ⎋, затем w, а затем снова Tab ⇥ для всех этих initWith
методы.
Вы даже можете использовать Tab E / Escape ⎋ после первого параметра, когда есть больше, чем метод только с одним параметром.
В вашем случае нажмите t > Tab E > Escape ⎋ > a и Return ↩, там у вас есть третий способ. Вы также можете перейти к предыдущему аргументу завершения кода с помощью Shift + Tab.