Как мне справиться с вводом вложенных вызовов в исходный код ObjC только с клавиатуры? - PullRequest
3 голосов
/ 08 декабря 2009

Я думаю, что за последние полтора года, экспериментируя с разработкой Cocoa и Cocoa Touch, я изо всех сил пытался заставить Xcode поддерживать своего рода ключевой макрос для обработки этого конкретного сценария кодирования ...

Я часто не знаю заранее, сколько сообщений отправляется в цепочку во время ввода новой строки кода. Например, я мог бы напечатать это ... (Символ трубы представляет местоположение курсора)

someVariable = [someObject someMessage]|

... Затем я понимаю, что мне нужно связать сообщение от возвращенного объекта (поскольку в ObjC безопасен обмен сообщениями nil, это обычная идиома.) Поэтому мне нужно изменить строку кода, чтобы она выглядела следующим образом ...

someVariable = [[someObject someMessage] |

Большая проблема заключается в том, что перед парой скобок, в конце которой я нахожусь, стоит поставить перед левой скобкой левую скобку, что повлекло бы за собой использование мыши или многократных нажатий клавиш каждый раз, когда мне нужно было это сделать. Потратив около 40 часов свободного времени и пытаясь найти какой-либо существующий ранее ярлык или сценарий клавиатуры (я исследовал Perl, сценарии оболочки и даже немного сценариев emacs Lisp в моем поиске.), Я собрал воедино это чудовище в AppleScript, всего ...

tell application "System Events"
    delay 0.2
    set editMenu to menu "Edit" of menu bar item "Edit" in menu bar 1 of
         process "Xcode"
    set kLeftArrowKey to 123
    key code kLeftArrowKey
    set theMenu to menu item "Balance" in menu "Format" of menu item
         "Format" in editMenu
    click theMenu
    set theMenu to menu item "Bracket Expression" in menu "Objective C"
         of menu item "Objective C" in menu "Insert Text Macro" of menu
         item "Insert Text Macro" in editMenu
    click theMenu
    key code kLeftArrowKey
end tell

Должен быть лучший путь.

Я считаю, по крайней мере, пять проблем с вышеизложенным ... (которые я прокомментирую, если их спросят.) Я все время вижу частые онлайн-жалобы от новых разработчиков ObjC по поводу этого синтаксиса, и я подозреваю, что эта проблема типизации основной больной вопрос. Хотя мне нравится, как читается синтаксис (настолько, что я избегаю точечной нотации для свойств из-за непоследовательности кода), как это вначале написано отстой. (Как и по иронии судьбы AppleScript, учитывая мою текущую взломанную реализацию.)

Помогите мне положить конец моим страданиям, и вы, вероятно, положите конец многим другим разработчикам ObjC ...

Ответы [ 3 ]

8 голосов
/ 08 декабря 2009

Какую версию Xcode вы используете? В моей версии левые скобки добавляются автоматически, если я набираю правую скобку после правильного имени селектора.

В Xcode 3.2 перейдите в «Настройки», затем «Редактирование текста», затем выберите «Вставить открывающую скобку».

4 голосов
/ 08 декабря 2009

Если вы застряли на Pre-Snow Leopard, вы можете попробовать использовать TextMate в качестве редактора. Он будет автоматически вставлять соответствующие фигурные скобки и поддерживает версии OS X до 10.4. Это немного дорого (меньше, чем BBEdit, но больше, чем Xcode, который бесплатен), но это действительно хороший редактор.

0 голосов
/ 08 декабря 2009

До Xcode 3.2 мне приходилось часто сталкиваться с этой же проблемой. Что-то, что облегчило мне боль, - это использование клавиши «Option» со стрелками влево / вправо, чтобы пропустить слово. Намного лучше, чем ждать, пока он пропустит письмо.

...