Завершение кода для имен многопараметрических методов в Xcode 4 - PullRequest
17 голосов
/ 13 июля 2011

В Xcode4 я обнаружил, что не могу заставить завершение кода легко сужаться для многопараметрических имен методов, где первая часть является общей. Например, рассмотрим следующие методы из UITableViewDelegate:

- tableView:viewForHeaderInSection:
- tableView:heightForHeaderInSection:
- tableView:accessoryTypeForRowWithIndexPath:
...

Список можно продолжить; Есть довольно много методов, которые запускают tableView. Если я наберу «tableView», список будет длинным и не будет быстро перемещаться. Если я наберу «tableView:», завершение кода будет завершено, как только я наберу двоеточие (:) Если я набираю запуск, такой как "tableViewview", завершение также завершается, предположительно, поскольку оно больше не соответствует буквально первой части имени метода.

Есть ли какой-нибудь способ завершить работу с помощью клавиатуры в таком списке, не прибегая к наведению мышки или выбиванию случайного числа нажатий клавиш со стрелками для навигации по длинному списку? Мне трудно поверить, что завершение кода для многопараметрических методов Objective-C настолько ограничено, но ни эксперименты, ни документация до сих пор не пролили свет.

Обновление для уточнения: Выше я имею в виду завершение объявления метода (например, в файле .m), а не вызова метода. Для вызовов методов Xcode 4.x выполняет завершение для каждой части параметра метода независимо; это прекрасно работает Приведенная выше проблема относится только к объявлениям, обычно при начале записи новой реализации метода в файле .m.

Ответы [ 3 ]

6 голосов
/ 21 ноября 2012

Похоже, что ожидаемое вами поведение (к сожалению) не реализовано в Xcode. Однако я нашел частичное решение: завершение кода работает, когда вы указываете полную первую часть многопараметрического метода, т.е. если вы набираете это (с пробелом в конце)

- tableView:(UITableView *)tableView 

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

Вам, наверное, интересно:

"О боже, я действительно должен ввести эту длинную преамбулу, чтобы получить мой код завершения? "

Код отрывки на помощь! Вам просто нужно ввести преамбулу один раз и преобразовать ее во фрагмент . Я обнаружил, что лучше всего настроить его следующим образом: не забудьте добавить пробел в конце части кода, это облегчит задачу.

Ima

Как использовать то, что вы только что создали? В вашем .m файле начните вводить tabl, и Xcode позволит вам автоматически заполнить фрагмент. Как только преамбула размещена, нажмите ESC, чтобы открыть список автозаполнения.

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

4 голосов
/ 10 июля 2013

Меня эта проблема раздражает довольно долго. Теперь я могу проверить, что нет способа сделать это даже в новейшем Xcode 5, я отправил отчет об ошибке:
Завершение объявления многопараметрического метода в Xcode

Пожалуйста, дублируйте его, если хотите.

2 голосов
/ 31 января 2013

О, извините, это не работает так, как я упоминал с заглушками протоколов, как вы хотели в своем обновлении. Я использую Accessorizer для этого, приложение в магазине приложений Mac, чтобы полностью реализовать декларацию ваших методов делегата / протокола, которые вы хотите реализовать. Надеюсь, что поможет немного.

Старый пост:

Для этого я использую Tab . Пример у меня часто бывает: Вы хотите один из многих методов инициализации в завершении кода.

Тогда вам не нужно прокручивать или использовать много нажатий клавиш, чтобы перейти к нужному методу.

Хит i > Хит Tab > init завершен.

Нажмите Escape , затем w , а затем еще раз Tab для всех этих initWith методов.

Вы даже можете использовать Tab ⇥ / Escape после первого параметра, , когда больше, чем метод только с одним параметром.

В вашем случае нажмите t > Tab > Escape > a и Return , там у вас есть третий способ. Вы также можете перейти к предыдущему аргументу завершения кода с помощью Shift + Tab .

...