使用脚本语言扩展Objective-C程序

时间:2011-05-27 17:43:09

标签: objective-c xcode macos interpreter

ObjC是否有现成的解释器实现。基本上,我需要通过脚本语言扩展我的程序。

我不确定这是否已经由某种框架提供,或者我可能在内部实现AppleScript - 不知道我将如何做到这一点。它似乎只适用于自动化程序本身,而不是用于扩展自己的功能。

类似于mIRC与脚本语言接口的方法。

4 个答案:

答案 0 :(得分:4)

你打赌有。它被称为FScript;它是开源的,包括一个带有REPL的控制台,您可以在其中与Cocoa对象进行交互。语法类似Smalltalk,与Objective-C非常相似 - 主要区别在于没有方括号。这是他们教程中的一些片段。请注意,变量不必显式输入!

> imageLocation := NSURL fileURLWithPath:'/Library/Desktop Pictures/Nature/Clown Fish.jpg'.

> image := CIImage imageWithContentsOfURL:imageLocation.

> image drawInRect:(200<>80 extent:600<>400) fromRect:image extent operation:NSCompositeSourceOver fraction:1.

您会对他们的Embedding FScript Into Cocoa Applications Guide感兴趣。

答案 1 :(得分:2)

您是否希望您的程序可编写脚本?如果是这样,那么您应该添加AppleScript支持。有关如何执行此操作的信息,请参阅Introduction to Cocoa Scripting Guide

答案 2 :(得分:2)

Python and Ruby可以与Objective C调用进行交互,因此您可以使用它们来扩展程序的功能。

答案 3 :(得分:0)

Objective C不是脚本语言,所以它没有解释器。它只能编译为机器代码。

如果你想使用脚本语言建议Lua。它非常简单轻巧,但仍然非常强大。您可以将它与本机C / C ++程序一起使用,也可以使用ObjC绑定。

无论如何,任何脚本语言(Python,Lua,AppleScript等)都是基于一些本机编程语言(通常是C或C ++)构建的,如果你想用新功能扩展你的程序,你仍然需要首先使用它们来实现它们。母语。

你可以开始:how to bind Lua。它适用于C ++,但它与C和ObjC相同(因为它是C的超集)