Реализация приложения Scriptable

Эта глава перечисляет ключевые шаги для реализации scriptable приложения Какао со ссылками к более подробной информации в случае необходимости.

Инструкции по реализации

Как только Вы завершили одну из фаз проектирования, описанных в Разработке для Scriptability, Вы используете шаги как следующий для реализации scriptable приложения Какао:

  1. Для нового приложения, реализовывая scriptability должна быть неотъемлемая часть создавания приложения. Т.е. Вы будете создавать scriptable классы, добавляя пишущий сценарий методов доступа, и т.д., поскольку Вы реализуете другие части приложения.

    Когда Вы добавляете scriptability к существующему приложению, существует больше возможности для подготовленного или поэтапного подхода. Т.е. можно хотеть протестировать подход путем переоснащения один или небольшое количество классов, прежде, чем расширить его до целого приложения.

    В любом случае Ваша работа должна включать этапы для тестирования каждой фазы scriptability, как разъяснено в плане тестирования.

  2. Какао следует шаблону разработки Model-View-Controller (MVC), где объекты модели инкапсулируют и управляют данными, используемыми приложением. Необходимо обычно поддерживать scriptability в объектах модели, имеющих тенденцию быть более персистентными. Несмотря на то, что могут быть некоторые случаи, где Вы хотите позволить писать сценарий Ваших объектов представления, иметь в виду, что сценарии, воздействующие на пользовательский интерфейс, имеют тенденцию быть хрупкими, и они могут также быть менее эффективными.

    Для получения дополнительной информации посмотрите Концентрат Поведение Scriptable в Объектах модели.

  3. Предоставьте sdef файлу scriptability информацию для Вашего приложения.

    Для получения дополнительной информации посмотрите Предоставление Файл Определения Сценариев.

  4. Поддержите соответствие именования кодирования значения ключа (KVC), например, переменные или методы доступа для scriptable свойств и элементов, на основе ключей в Вашем sdef файле. Поддержка сценариев какао полагается на это соответствие именования.

    Для получения дополнительной информации посмотрите, Поддерживают Соответствие KVC.

  5. Включайте sdef файл в проект XCode для Вашего приложения, как описано в Добавляют Файл Определения Сценариев к Вашему Проекту XCode.

  6. Измените свое приложение Info.plist файл, чтобы включить поддержку сценариев Какао и идентифицировать Ваш sdef файл, как описано поочередно При Сценариях Поддержки в Вашем Приложении.

  7. Какао реализует NSScriptCommand класс и много определенных подклассов, такой как NSDeleteCommand, NSGetCommand, NSMoveCommand, и NSSetCommand. Однако для некоторых команд, реализованных Какао, Ваше приложение, возможно, должно обеспечить различную реализацию.

    Для получения информации о том, как сделать это, посмотрите Шаги для Реализации Новой или Измененной Команды Сценария.

  8. Реализация objectSpecifier методы для scriptable классов в Вашей объектной модели. Эти методы описывают объект и указывают на его родителя в объектной иерархии вместимости (с объектом приложения, обычно служащим наиболее удаленным контейнером). Они вызываются экземпляром NSGetCommand когда это работает с Вашим приложением для получения запрошенной информации.

    При создании классов помощника для добавления scriptability к существующему приложению, эти классы также должны реализовать объектные методы спецификатора.

    Для получения дополнительной информации посмотрите Методы Спецификатора Объекта Реализации для Классов Scriptable.

  9. Реализуйте любые новые подклассы команды сценария, которых требует Ваше приложение.

    Много приложений обеспечивают уникальные возможности, такие как вращение изображения или преобразование между двумя форматами аудио. Для создания этих функций scriptable Вы, возможно, должны определить новые классы команды сценария, которые являются подклассами NSScriptCommand или один из других классов команды, предоставленных Какао.

    Для получения дополнительной информации посмотрите Подклассы для Стандарта Команды AppleScript andScript Обзор Команд.

  10. Для использования в своих интересах поддержки сценариев Какао, работающей с документом и классами окна приложение должно использовать архитектуру документа Какао.

    Для получения дополнительной информации посмотрите Использование Архитектура Документа.

  11. Для использования в своих интересах поддержки сценариев Какао, работающей с текстом приложение может использовать в своих интересах встроенную поддержку Какао.

    Для получения дополнительной информации посмотрите Доступ текстовый Комплект.

  12. В течение процесса реализации протестируйте свое приложение согласно плану тестирования, который Вы разработали.

    Для подсказок и предложений, посмотрите Тестирование, Отладку и Производительность.

Предоставьте файл определения сценариев

Каждое scriptable приложение должно обеспечить определение своей scriptability информации — терминология, доступная для использования в сценариях, предназначающихся для приложения, а также информация о реализации раньше поддерживала ту терминологию. Эта информация включает ряд ключей для scriptable свойств, доступных в приложении посредством кодирования значения ключа (описанный в, Обеспечивают Ключи для Кодирования Значения ключа).

При разработке sdef файла в течение фазы проектирования Вы уже завершили этот шаг. В противном случае посмотрите Подготовку Файла Определения Сценариев для описания шагов, которые Вы предпринимаете, чтобы создать sdef файл и добавить scriptability информацию к ней.

Для получения информации о работе с более старым форматом scriptability посмотрите Файлы с терминологией Комплекта и Сценария Сценария.

Сконцентрируйте поведение Scriptable в объектах модели

Парадигма Model-View-Controller (MVC) является одним из центральных шаблонов разработки для приложений Какао. MVC присваивает объекты в приложении к одной из трех ролей и рекомендует попытаться поддержать разделение среди объектов различных ролей.

Обычно объекты, которые Вы делаете scriptable, должны быть объектами модели. Самый эффективный путь к сценарию для выполнения задачи обычно включает изменение модели и часто является не тем же как лучшим способом для пользователя сделать ту же задачу через пользовательский интерфейс (или представление). Это является соответствующим с тем, как AppleScript работает, и Какао соответственно приспосабливает свою поддержку сценариев уровню модели.

Сценарий не должен требовать участия пользователя, если это не предназначается больше как макрос, чем как форма пакетной обработки. В подобном макросу сценарии пользователь должен подготовить вещи к сценарию (такие как открытие окна и создание или выбор определенных объектов), и затем вызвать его. Если Вы ожидаете, что Ваше приложение будет задано сценарием с этой целью, можно хотеть обеспечить scriptable поведение для надлежащих объектов немодели, таких как окна и выборы. Если так, убедиться ограничить Вашу поддержку сценариев в объектах немодели к тем определенным целям.

Обеспечьте ключи для кодирования значения ключа

Вспомните, что кодирование значения ключа (KVC) является механизмом для доступа к свойствам объектов косвенно ключом, где ключ является просто строкой, представляющей имя свойства (такой как "xPosition" для горизонтальной координаты графического объекта). Сценарии какао полагаются на KVC, и для нахождения, что указанные объекты для команды воздействуют на и для получения и установки значений в указанных объектах.

Ваше приложение обеспечивает ключи для своих scriptable свойств и элементов в class определения в его sdef файле. Свойство и сами имена элементов служат ключами, если Вы не указываете различный ключ явно. Сценарии какао корректируют ключевые имена по мере необходимости согласно соблюдающим правилам, которые являются соответствующими стандартным соглашениям о присвоении имен Какао для средств доступа:

Можно переопределить соглашения о присвоении имен по умолчанию указать произвольные значения ключа в случае необходимости. Например, предположите, что Вы хотите, чтобы сценарист был в состоянии использовать color в сценарии, но Вашем приложении относится к базовому свойству как foregroundColor (как в NSTextStorage класс). Можно указать "foregroundColor" как ключ для "color" свойство путем добавления a cocoa key запись в sdef property определение:

<property name="color" code="colr" ...
    <cocoa key="foregroundColor"/>

Для поддержки получения и установки scriptable свойств и элементов в приложении Вы определяете методы доступа, соответствующие ключи в Вашем sdef, как описано в Поддерживают Соответствие KVC. Для получения дополнительной информации об именовании по умолчанию и работе с ключами, посмотрите Элементы Какао.

Добавьте файл определения сценариев к своему проекту XCode

Как только Вы создали sdef файл, необходимо будет добавить его к проекту XCode для приложения. Поместите файл в папку проекта (или другое надлежащее расположение), и Проект использования> Добавляют к Проекту, также позволяющему Вам добавить sdef файл к целям приложения. Добавление sdef файла к проекту автоматически добавляет его к фазе сборки Ресурсов Пакета Копии, таким образом, это будет включено в приложение.

Включите поддержку сценариев в своем приложении

Для включения встроенной поддержки сценариев Какао Вы добавляете следующий ключ к своему приложению Info.plist файл:

    <key>NSAppleScriptEnabled</key>
    <string>YES</string>

Для предоставления scriptability информации приложения через sdef файл Вы добавляете второй ключ к списку свойств для указания sdef файла. Вот запись для приложения Эскиза:

    <key>OSAScriptingDefinition</key>
    <string>Sketch.sdef</string>

Методы спецификатора объекта реализации для классов Scriptable

Объектный спецификатор определяет местоположение scriptable объекта или объектов в иерархии вместимости, в которой они находятся.

Когда оператор сценария предназначается для приложения, приложение, возможно, должно возвратить ответ. Например, результат a get команда является объектом или списком объектов. Когда Какао возвращает эти объекты в событии Apple ответа, оно не возвращает указатели на объекты Objective C, оно возвращает объектные спецификаторы.

Для получения объектных спецификаторов Какао отправляет objectSpecifier сообщения к объектам, которые будут возвращены. Поэтому для любого класса объекта, который является частью Вашей иерархии вместимости scriptable объектов, необходимо реализовать objectSpecifier метод. Этот метод объявляется в NSScriptObjectSpecifiers, категория на NSObject это реализует просто возвращающуюся версию nil.

Для получения дополнительной информации, включая примеры кода, посмотрите Объектные Спецификаторы.

Используйте архитектуру документа

NSApplication, NSDocument, NSDocumentController, NSWindow, и NSWindowController классы формируют базовую структуру для архитектуры документа Какао. Вместе с терминологией, определенной в Стандартном комплекте, эти классы предоставляют прямую поддержку для стандартного документа AppleScript, пишущего сценарий модели, включая классы такой как application, document, и window. При использовании этих классов для реализации основанного на документе приложения, то приложение автоматически поддерживает много функций сценариев.

Например, NSApplication, NSDocument, и NSWindow классы KVC-совместимы для стандартных scriptable свойств. NSApplication обеспечивает методы для доступа к документам приложения как упорядоченный список. NSDocument класс предоставляет поддержку для close, print, и save команды путем реализации handleCloseScriptCommand:, handlePrintScriptCommand:, и handleSaveScriptCommand: методы. NSWindowScripting также версии значения по умолчанию реализаций этих методов, во многих случаях передающих управление к документу окна. Это также реализует методы для scriptable доступа к атрибутам окна, таким как рамка для закрытия, строка заголовка, и т.д.

Приложения, использующие в своих интересах архитектуру документа Какао, помещают себя в лучшую позицию для поддержки сценариев обычно. Документ в приложениях Какао обычно владеет и управляет одним или более объектами модели приложения. Это поэтому обеспечивает концентратор для доступа в виде сценария к объектам модели в Вашем приложении, которые являются теми, которые загружают и сохраняют данные.

Таблица 3-1 перечисляет классы Какао, соответствующие классам AppleScript в Стандартном комплекте, вместе с атрибутами и отношениями (свойства и элементы) используемый теми классами.

Табличные 3-1  атрибуты комплекта Стандарта и отношения

Objective C и класс AppleScript

Атрибуты (срок сценария, если отличающийся)

Отношения

NSObject

Реализации item Класс AppleScript. Для любого scriptable класса Objective C, наследовавшегося от NSObject, класс AppleScript, который это реализует, наследовался от item класс (и наследовался class свойство и properties свойство).

имя класса (class), свойства

NSApplication

Реализации application Класс AppleScript.

имя, активный флаг (frontMost), версия

документы, окна (оба доступные как упорядоченный отношение)

NSDocument

Реализации document Класс AppleScript.

расположение дискового представления документа (path); последний компонент имени файла (name); отредактированный флаг (modified)

NSWindow

Реализации window Класс AppleScript.

заголовок (name); различные атрибуты двоичные состояния: closeable, плавание, миниатюризированное, модальное, изменяемого размера, назвало, видимый, zoomable

документ

Получите доступ к текстовому комплекту

Текстовый комплект определяет терминологию, позволяющую сценариям запрашивать или выбирать текстовые элементы на разных уровнях гранулярности: символ, слово, абзац или вся организация текста. NSTextStorage класс, предоставленный Набором Приложения, определяет соответствующий набор методов для получения и установки scriptable свойств NSTextStorage объекты.

Для получения доступа к этому тексту, пишущему сценарий поддержки, используйте NSTextStorage возразите как содержание для одного из Ваших scriptable классов. Пример кода TextEdit (доступный в <Xcode>/Examples/AppKit/TextEdit) демонстрирует scriptable приложение, поддерживающее текстовые сценарии, а также сценарии поддержки печати.

Таблица 3-2 перечисляет классы Какао для работы с текстом, вместе с атрибутами и отношениями, используемыми теми классами.

Табличные 3-2  текстовые атрибуты комплекта и отношения

Класс

Атрибуты (срок сценария, если отличающийся)

Отношения

NSTextStorage

имя шрифта (name), размер шрифта (size), основной цвет (color)

припишите выполнения, символы, абзацы, текст, слова