Информация о версии AppleScriptObjC

Содержание:

Введение

AppleScriptObjC является новой платформой в OS X v10.6, который позволяет приложениям Какао быть записанными в AppleScript. Используя AppleScriptObjC, Ваш код AppleScript может работать с любой платформой Какао и может функционировать как первоклассного гражданина в мире Какао.

Это примечание покрывает синтаксические подробные данные использования AppleScriptObjC и доступа к функциональности Какао от AppleScript. Для записи законченного приложения Вы должны будете изучить само Какао и должны запуститься с Фундаментального Руководства по Какао.

AppleScriptObjC obsoletes AppleScript Studio, осуждающийся с OS X v10.6. Разработчики, использующие AppleScript Studio, должны мигрировать на AppleScriptObjC и должны запустить новое использование проектов AppleScriptObjC исключительно. Разработка AppleScript Studio все еще поддерживается, но функционирует для создания новых проектов, были удалены, и палитра AppleScript Studio в Интерфейсном Разработчике была скрыта. Чтобы повторно включить его, используйте эту команду в Терминале, и затем повторно запустите Интерфейсного Разработчика:

defaults write com.apple.InterfaceBuilder3 IBEnableAppleScriptStudioSupport -bool YES

Objective-C/AppleScript Быстрое Руководство по Переводу

AppleScriptObjC позволяет объектам AppleScript служить объектами Objective C во время выполнения Какао, таким образом, использование разработки AppleScriptObjC следует за Objective C и образцами Какао. Эта таблица является справочником к эквивалентам AppleScript для различных функций Objective-C, показанных как определение суррогатного класса с версией Objective C слева и версией AppleScript справа.

Objective C

AppleScript

@interface MyClass : NSObject {

script MyClass

   property parent: class "NSObject"

   int myProperty;

   IBOutlet NSTextField *myField;

}

IBOutlet @property (retain) NSButton *myButton;

   property myProperty: 0

   property myField: missing value

   property myButton: missing value

@end

@implementation MyClass

 

- (IBAction) myAction:(id) object {

   on myAction_(object)

   [object method];

   [object method:param];

   [object methodWithArg1:p1 arg2:p2];

      object's method()

      object's method_(param)

      object's methodWithArg1_arg2_(p1, p2)

   [object property];

   object.property;

      object's property()

      object's property

}

@end

   end myAction_

end script

Идентификаторы

AppleScript различает идентификаторы приложений, которые являются условиями, определенными AppleScript или интерфейсом сценариев приложения и идентификаторами пользователей, которые являются условиями, определенными писателем сценария. В Редакторе AppleScript предпочтения они упоминаются как “ключевые слова приложения” и “переменные и имена подпрограммы”, соответственно. Идентификаторы, переданные AppleScriptObjC, в определенных именах методов Какао, должны быть идентификаторами пользователей. Если идентификатор конфликтовал бы с идентификатором существующего приложения (или даже зарезервированное слово AppleScript), можно вынудить его считаться идентификатором пользователя путем выхода из него с вертикальными панелями.

Например, NSColor имеет a set метод для того, чтобы выбрать текущий цвет получения, но set также зарезервированное слово AppleScript для присвоения переменных. Используя set как имя обработчика, не выходя это была бы синтаксическая ошибка, таким образом, корректное использование выглядит примерно так:

tell myColor to |set|()

Точно так же NSWindow имеет a bounds свойство, но bounds также определенный с помощью приложения срок, так для использования его в качестве NSWindow, этого нужно оставить:

get myWindow's |bounds|

Когда в сомнении, добавьте вертикальные панели: если они не необходимы, то они просто избыточны и безопасны.

Классы и константы

Классы обрабатываются как элементы прозвища, и константы и перечисляемые значения как свойства, оба из current application. Наблюдайте использование NSView, NSColor, и NSCalibratedRGBColorSpace в этом примере:

script MyView
   property parent: class "NSView"
 
   on drawRect_(rect)
       set c to current application's class "NSColor"'s whiteColor()
       c's colorUsingColorSpaceName_(current application's NSCalibratedRGBColorSpace)
   end drawRect_
end script

В местах, где current application неявный контейнер, такой как в родительском свойстве или на верхнем уровне сценария, это может быть сокращено к my, или в случае спецификаторов класса, опущенных полностью. (В организации обработчика неявный контейнер является родителем объекта сценария, class "NSView", так current application's должно быть явным.) Это позволяет методу удобства сохранять ввод: определите свойства на верхнем уровне сценария, и затем обратитесь к свойствам в обработчике, как это:

property NSColor: class "NSColor"
property NSCalibratedRGBColorSpace: my NSCalibratedRGBColorSpace
 
script MyView
   property parent: class "NSView"
   on drawRect_(rect)
       set c to NSColor's whiteColor()
       c's colorUsingColorSpaceName_(NSCalibratedRGBColorSpace)
   end drawRect_
end script