Когда вы пишете код, вы можете использовать возможность автоматического дополнения в среде Xcode.
Язык Objective-C довольно многословный, и любой способ ускорить и облегчить набор текста следует приветствовать. Однако лично я не устанавливаю флажок Suggest completions while typing на вкладке Editing; вместо этого я устанавливаю флажок Use Escape key to show completion suggestions и кода хочу использовать возможность автоматического дополнения, включаю этот механизм вручную, нажимая клавишу <Esc>.
Для примера рассмотрим код, набранный выше, а точка вставки расположена перед второй закрывающей квадратной скобкой. Теперь я набираю слово init, а затем нажимаю клавишу <Esc>. На экране появляется маленькое всплывающее меню, в котором перечислены четыре
метода init, подходящие для класса UIAlertView (рис. 9.2). Вы можете перемещаться по этому меню, закрывать его и подтверждать выбор, используя только клавиатуру. Итак, если бы он не был выбран по умолчанию, я бы перешел к пункту initWithTitle:... с помощью клавиши <Down> и нажал клавишу <Return> для подтверждения выбора.
Puc. 9.2. Меню автоматического дополнения
В качестве альтернативы я мог бы нажать комбинацию клавиш <Control+Period> вместо <Esc>. Комбинация клавиш <Control+Period> позволяет переключать альтернативы. Нажмите клавишу <Return>, чтобы подтвердить сделанный выбор. Другая возможность — нажать клавишу <ТаЬ>, выполняющую частичное дополнение, не закрывая меню автоматического дополнения. Если бы в ситуации, изображенной на рис. 9.2, в этот момент я нажал бы клавишу <ТаЬ>, то в мой код было бы вставлено имя кода initWith — система подчеркивает его пунктирной линией, — а пункт init, который стал бы неприемлемым, был бы исключен из меню.
Заметим, что в меню автоматического дополнения существует сокращенная форма быстрой справки; щелкните на ссылке More, чтобы увидеть (в справочном окне) полную справку о выбранном методе (см. главу 8). Если выбранный метод определен в вашем коде и вы использовали формат doxygen для описания этого метода в комментарии, как описано в главе 8, то здесь появится описание \brief, если оно существует, или полное описание в противном случае. По этой причине целесообразно определить описание \brief, чтобы сохранить компактность окна для дополнения кода.
Если выбрать альтернативу в меню автоматического дополнения, то в мой код будет вставлен шаблон вызова метода (я разделил его на несколько строк):
Выражения в угловых скобках <#...#> являются полями для заполнения, в которых набирается каждый параметр. Вы можете выделить следующее поле для заполнения с помощью клавиши <ТаЬ> (если точка вставки предшествует полю для заполнения) или выбрать команду Navigate^Jump to Next Placeholder (<Control+/>). Таким образом, я могу выбрать поле для заполнения и набрать в нем реальный аргумент, который хочу передать, выбрать следующее поле для заполнения, набрать в нем следующий аргумент и т.д.
Поля для заполнения разделены скобками, <#...#>, но в среде Xcode они 0% отображаются как текстовые лексемы, чтобы предотвратить их непреднамеренное редактирование. Для того чтобы преобразовать поле для заполнения в обычную строку без этих разделителей, выберите его и нажмите клавишу <Return> или дважды щелкните на этом поле.
Механизм автоматического дополнения распространяется и на объявления методов. Вы не обязаны заранее знать или вводить тип значения, возвращаемого методом. Просто наберите начальные символы, - или + (чтобы отметить метод экземпляра или метод класса), за которыми следуют первые несколько букв имени метода. Например, в моем делегате приложения я мог бы набрать
- appli
Если после этого я нажму клавишу <Esc>, то увижу список методов, таких как appliса tion: didChangeStatusBarFrame:; которые можно послать моему делегату приложения (почему это возможно, объясняется в главе 11). Если я выберу один из методов, объявление будет заполнено автоматически, включая тип возвращаемого значения и имена параметров.
В этот момент я готов набрать левую фигурную скобку, за которой следует оператор return; в результате на экране появится соответствующая закрывающая фигурная скобка, а точка вставки будет расположена между ними, позволяя ввести тело метода.