【问题标题】:Is there an Objective-C Interpreter for the Mac? [closed]是否有适用于 Mac 的 Objective-C 解释器? [关闭]
【发布时间】:2011-11-04 21:36:08
【问题描述】:

有时最好打开一个解释器,输入一些代码,看看它是否正常工作,而不是为了快速测试一些东西而编译像 Xcode 项目这样的大型项目。是否存在适用于 Mac 的 Objective-C 解释器,还是我不走运?

更新:App Store 中有一个名为 CodeRunner 的付费程序,它可以让您快速运行 Obj-C(以及几个其他语言)。它不是解释器,但可以很好地快速测试想法:http://itunes.apple.com/us/app/coderunner/id433335799?mt=12

【问题讨论】:

  • 尝试使用clang-interpreter(Clang 中的示例之一)。它确实非常有限,但您可以轻松扩展它。

标签: objective-c interpreter coderunner


【解决方案1】:

您可以使用F-Script,它基于 Smalltalk,但可以让您与 Cocoa 交互。您还可以将它嵌入到您的应用程序中,让您在运行时检查视图和其他内容。它非常有用。编辑:正如 cmets 中所指出的,还有其他可用的出色语言桥接器,例如 PyObjCRubyCocoa/MacRubyNu 等。CINT 是 C 解释器的一个示例,但不是 Obj -C。

至于真正的 Objective-C 解释器,我认为并不存在。但是在 Xcode 中设置一个“命令行工具”项目并不难,它为您提供了一个非常简单的main.m 文件来尝试一些东西。

【讨论】:

  • 我的源文件夹中还有一个,呃... s-load 小型测试控制台程序。唯一的问题是名字。在 Delphi 中,项目有一个默认名称 ProjectN,其中 N 是一个运行号(Delphi 检查它是否已经存在)。对于大多数测试项目,这对我来说很好。类似的东西会让 Xcode、IMO 中的事情变得更容易。可以为 Xcode 写插件吗?
  • 听起来像it's possible
  • objective-c 运行时上的其他解释语言是NuMacRuby。为了快速尝试 C 的东西(算术、类型转换等),我发现 CINT 很有用。
  • 还有PyObjC(Snow Leopard 上默认安装;不知道 Lion)——您可以从 Python 解释器会话访问几乎所有 Cocoa:from Cocoa import *
  • +1 用于 python!它就像一个魅力,它非常适合您可以在项目中使用的脚本,例如可以读取 Core Data 模型的脚本。
【解决方案2】:

对于那些迟到的人:看看Tosti。一个基本但功能强大的 Objective-C 解释器。

这是我放在 GitHub 上的一个副项目,因为目前似乎很少可用。我用它来做一些远程调试。提供支持。

【讨论】:

    【解决方案3】:

    RubyMotion 允许您使用 Cocoa SDK 的所有库(据我所知,由于 Ruby 和 Objective C 之间的相似性,限制为 0),例如,在运行时。当然,您也可以使用可以加载到其中的每个 Objective C 库。唯一的限制与所有其他 IDE 相同,即 Apple 针对未经批准的动态库提出的限制。

    无论如何,函数在语法上非常非常类似于 Objective-C,令我惊讶的是你可以用 ruby​​ 以这种方式做到这一点(通常你不能

    #for example the in AppDelegate class
    class AppDelegate
      def application(application, didFinishLaunchingWithOptions:launchOptions)
        #...
        true
      end
     end
    

    当您运行 rake(相当于 XCode 中的 Build 命令)时,您当然可以从控制台执行此操作,并且一旦您的 iPhone/iPad 应用程序加载到模拟器或您的 Apple 设备,您就可以控制该设备或通过从控制台输入的命令以交互方式模拟模拟器。

    Ruby Motion 每年花费 200 美元,因此当然不值得仅仅因为交互式 shell 功能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 2010-09-17
      • 2011-08-07
      • 2010-09-18
      • 2013-07-16
      • 2013-05-05
      • 2010-09-09
      • 1970-01-01
      相关资源
      最近更新 更多