Это вопрос о внедрении сценария приложения с использованием Cocoa Scripting.Предоставление моих собственных объектов для «создания новых» в моем приложении для сценариев
Объект, предназначенный для сценария application
, содержит элементы пользовательского класса, назовите его flower
.
В файле .sdef класс Cocoa для flower
указан как ScriptableFlower
.
В Applescript, теперь можно написать:
tell app "myapp"
get flowers
end tell
Мой код обеспечивает функцию доступа для получения цветов: -(NSArray*)flowers
.
Теперь я хотел бы реализовать способ добавления новых цветов, так что можно написать:
tell app "myapp"
make new flower
end tell
поведение по умолчанию для этого, с по умолчанию основной набор обработчика для «сделать» с помощью NSCreateCommand
, является следующим образом:
скриптового движок будет получать текущий массив цветов, вызвав мою flowers
функции, а затем создать экземпляр нового объекта какао класса ScriptableFlower
, а затем вызвать setFlowers:(NSArray*)
с массивом, который содержит мои исходные объекты плюс только что созданного ,
Однако это не подходит для моего приложения: я не могу позволить механизму сценариев создавать объекты моих скриптовых классов по своему усмотрению.
Вместо этого мне нужно создать экземпляр.
Решение на полпути было бы реализовать метод по умолчанию -(id)init
, а затем определить, вызван ли он мной - если нет, я могу выполнить дополнительные шаги. Но это не чисто. Я скорее не позволяю скриптовому движку создавать новые объекты вообще, а скорее предоставлять их себе, поскольку у меня может быть уже готовый объект «где-то».
Есть ли какое-то положение в Cocoa Scripting, которое приводит к тому, что он вызывает меня всякий раз, когда он хочет, чтобы я создал новый скриптовый объект?
Update
Уточнение: Cocoa Scripting docs объясняет, что можно реализовать специальные обработчики вставки (insertObject:in<Key>AtIndex:
), так что не надо брать весь NSArray, но по-прежнему приводит к скриптовый движок для создания объект. Однако мне нужно попросить создать объект.