Реализация приложения Scriptable
Эта глава перечисляет ключевые шаги для реализации scriptable приложения Какао со ссылками к более подробной информации в случае необходимости.
Инструкции по реализации
Как только Вы завершили одну из фаз проектирования, описанных в Разработке для Scriptability, Вы используете шаги как следующий для реализации scriptable приложения Какао:
Для нового приложения, реализовывая scriptability должна быть неотъемлемая часть создавания приложения. Т.е. Вы будете создавать scriptable классы, добавляя пишущий сценарий методов доступа, и т.д., поскольку Вы реализуете другие части приложения.
Когда Вы добавляете scriptability к существующему приложению, существует больше возможности для подготовленного или поэтапного подхода. Т.е. можно хотеть протестировать подход путем переоснащения один или небольшое количество классов, прежде, чем расширить его до целого приложения.
В любом случае Ваша работа должна включать этапы для тестирования каждой фазы scriptability, как разъяснено в плане тестирования.
Какао следует шаблону разработки Model-View-Controller (MVC), где объекты модели инкапсулируют и управляют данными, используемыми приложением. Необходимо обычно поддерживать scriptability в объектах модели, имеющих тенденцию быть более персистентными. Несмотря на то, что могут быть некоторые случаи, где Вы хотите позволить писать сценарий Ваших объектов представления, иметь в виду, что сценарии, воздействующие на пользовательский интерфейс, имеют тенденцию быть хрупкими, и они могут также быть менее эффективными.
Для получения дополнительной информации посмотрите Концентрат Поведение Scriptable в Объектах модели.
Предоставьте sdef файлу scriptability информацию для Вашего приложения.
Для получения дополнительной информации посмотрите Предоставление Файл Определения Сценариев.
Поддержите соответствие именования кодирования значения ключа (KVC), например, переменные или методы доступа для scriptable свойств и элементов, на основе ключей в Вашем sdef файле. Поддержка сценариев какао полагается на это соответствие именования.
Для получения дополнительной информации посмотрите, Поддерживают Соответствие KVC.
Включайте sdef файл в проект XCode для Вашего приложения, как описано в Добавляют Файл Определения Сценариев к Вашему Проекту XCode.
Измените свое приложение
Info.plist
файл, чтобы включить поддержку сценариев Какао и идентифицировать Ваш sdef файл, как описано поочередно При Сценариях Поддержки в Вашем Приложении.Какао реализует
NSScriptCommand
класс и много определенных подклассов, такой какNSDeleteCommand
,NSGetCommand
,NSMoveCommand
, иNSSetCommand
. Однако для некоторых команд, реализованных Какао, Ваше приложение, возможно, должно обеспечить различную реализацию.Для получения информации о том, как сделать это, посмотрите Шаги для Реализации Новой или Измененной Команды Сценария.
Реализация
objectSpecifier
методы для scriptable классов в Вашей объектной модели. Эти методы описывают объект и указывают на его родителя в объектной иерархии вместимости (с объектом приложения, обычно служащим наиболее удаленным контейнером). Они вызываются экземпляромNSGetCommand
когда это работает с Вашим приложением для получения запрошенной информации.При создании классов помощника для добавления scriptability к существующему приложению, эти классы также должны реализовать объектные методы спецификатора.
Для получения дополнительной информации посмотрите Методы Спецификатора Объекта Реализации для Классов Scriptable.
Реализуйте любые новые подклассы команды сценария, которых требует Ваше приложение.
Много приложений обеспечивают уникальные возможности, такие как вращение изображения или преобразование между двумя форматами аудио. Для создания этих функций scriptable Вы, возможно, должны определить новые классы команды сценария, которые являются подклассами
NSScriptCommand
или один из других классов команды, предоставленных Какао.Для получения дополнительной информации посмотрите Подклассы для Стандарта Команды AppleScript andScript Обзор Команд.
Для использования в своих интересах поддержки сценариев Какао, работающей с документом и классами окна приложение должно использовать архитектуру документа Какао.
Для получения дополнительной информации посмотрите Использование Архитектура Документа.
Для использования в своих интересах поддержки сценариев Какао, работающей с текстом приложение может использовать в своих интересах встроенную поддержку Какао.
Для получения дополнительной информации посмотрите Доступ текстовый Комплект.
В течение процесса реализации протестируйте свое приложение согласно плану тестирования, который Вы разработали.
Для подсказок и предложений, посмотрите Тестирование, Отладку и Производительность.
Предоставьте файл определения сценариев
Каждое scriptable приложение должно обеспечить определение своей scriptability информации — терминология, доступная для использования в сценариях, предназначающихся для приложения, а также информация о реализации раньше поддерживала ту терминологию. Эта информация включает ряд ключей для scriptable свойств, доступных в приложении посредством кодирования значения ключа (описанный в, Обеспечивают Ключи для Кодирования Значения ключа).
При разработке sdef файла в течение фазы проектирования Вы уже завершили этот шаг. В противном случае посмотрите Подготовку Файла Определения Сценариев для описания шагов, которые Вы предпринимаете, чтобы создать sdef файл и добавить scriptability информацию к ней.
Для получения информации о работе с более старым форматом scriptability посмотрите Файлы с терминологией Комплекта и Сценария Сценария.
Сконцентрируйте поведение Scriptable в объектах модели
Парадигма Model-View-Controller (MVC) является одним из центральных шаблонов разработки для приложений Какао. MVC присваивает объекты в приложении к одной из трех ролей и рекомендует попытаться поддержать разделение среди объектов различных ролей.
Объекты модели инкапсулируют данные и основные способы поведения приложения; идеально, у них нет явного соединения с пользовательским интерфейсом.
Представление возражает существующим данным против пользователя; они знают, как вывести на экран и возможно отредактировать данные, но обычно не инкапсулируйте данные, которые не являются определенными для отображения или редактирования.
Объекты контроллера выступают в качестве посредника, координируя обмен данными между моделью и просматривают объекты.
Обычно объекты, которые Вы делаете scriptable, должны быть объектами модели. Самый эффективный путь к сценарию для выполнения задачи обычно включает изменение модели и часто является не тем же как лучшим способом для пользователя сделать ту же задачу через пользовательский интерфейс (или представление). Это является соответствующим с тем, как AppleScript работает, и Какао соответственно приспосабливает свою поддержку сценариев уровню модели.
Сценарий не должен требовать участия пользователя, если это не предназначается больше как макрос, чем как форма пакетной обработки. В подобном макросу сценарии пользователь должен подготовить вещи к сценарию (такие как открытие окна и создание или выбор определенных объектов), и затем вызвать его. Если Вы ожидаете, что Ваше приложение будет задано сценарием с этой целью, можно хотеть обеспечить scriptable поведение для надлежащих объектов немодели, таких как окна и выборы. Если так, убедиться ограничить Вашу поддержку сценариев в объектах немодели к тем определенным целям.
Обеспечьте ключи для кодирования значения ключа
Вспомните, что кодирование значения ключа (KVC) является механизмом для доступа к свойствам объектов косвенно ключом, где ключ является просто строкой, представляющей имя свойства (такой как "xPosition"
для горизонтальной координаты графического объекта). Сценарии какао полагаются на KVC, и для нахождения, что указанные объекты для команды воздействуют на и для получения и установки значений в указанных объектах.
Ваше приложение обеспечивает ключи для своих scriptable свойств и элементов в class
определения в его sdef файле. Свойство и сами имена элементов служат ключами, если Вы не указываете различный ключ явно. Сценарии какао корректируют ключевые имена по мере необходимости согласно соблюдающим правилам, которые являются соответствующими стандартным соглашениям о присвоении имен Какао для средств доступа:
Для имен свойства однословных имя становится ключом. Например, sdef свойство называют
"width"
привел бы к ключу"width"
.Для имен свойства многократного слова Какао капитализирует каждое слово имени кроме первого слова, затем удаляет любые пробелы. Например, sdef свойство называют
"desktop position"
привел бы к ключу"desktopPosition"
.Для имен элементов Какао указывает ключ путем создания множественного числа из имени. Например,
"word"
результаты в ключе"words"
и"document"
результаты в"documents"
.
Можно переопределить соглашения о присвоении имен по умолчанию указать произвольные значения ключа в случае необходимости. Например, предположите, что Вы хотите, чтобы сценарист был в состоянии использовать 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 в Стандартном комплекте, вместе с атрибутами и отношениями (свойства и элементы) используемый теми классами.
Получите доступ к текстовому комплекту
Текстовый комплект определяет терминологию, позволяющую сценариям запрашивать или выбирать текстовые элементы на разных уровнях гранулярности: символ, слово, абзац или вся организация текста. NSTextStorage
класс, предоставленный Набором Приложения, определяет соответствующий набор методов для получения и установки scriptable свойств NSTextStorage
объекты.
Для получения доступа к этому тексту, пишущему сценарий поддержки, используйте NSTextStorage
возразите как содержание для одного из Ваших scriptable классов. Пример кода TextEdit (доступный в <Xcode>/Examples/AppKit/TextEdit
) демонстрирует scriptable приложение, поддерживающее текстовые сценарии, а также сценарии поддержки печати.
Таблица 3-2 перечисляет классы Какао для работы с текстом, вместе с атрибутами и отношениями, используемыми теми классами.
Класс | Атрибуты (срок сценария, если отличающийся) | Отношения |
---|---|---|
имя шрифта ( | припишите выполнения, символы, абзацы, текст, слова |