Is there a REPL for Objective-C?
I am learning Objective-C and am sorely missing a REPL, coming from a Python background.
Is there a REPL for Objective-C?
I am learning Objective-C and am sorely missing a REPL, coming from a Python background.
F-Script为 Cocoa 开发提供了一个受 Smalltalk 启发的 REPL,而Nu提供了一个基于 Lisp 的 REPL。F-Script 看起来更精致一些,并提供了一个对象浏览器。
他们似乎都针对 OS X,而不是 iOS 开发。有零散的论坛和博客文章描述了使用 Nu 开发 iOS 应用程序的人,但它们似乎都来自大约两年前。还有一个 YouTube 视频,“使用 Scheme REPL 实时调试 iPhone 应用程序”,其中有一个同事使用 Scheme 调试 iPhone 应用程序的截屏视频。
我还没有尝试过任何这些技术,但我很想听听任何人的意见。
我刚刚意识到这一切都有一个更简单的答案。如果你来自 Python,并且想在 REPL 中试验 Cocoa,你应该只使用 Python REPL。OS X 附带一个 Python 到 Objective-C 的桥接器。只需运行 Python,do import objc
,就可以了。除其他外,还有用于 Ruby 和 Common Lisp 的桥梁。
当然,所有这些 REPL 只允许您编写动态代码以与 Cocoa 交互,但它们不允许您编写实际的 Objective-C 代码,并动态解释或编译它以与它动态交互。所以没有一个真正符合您的原始要求。
当触发断点时,调试器应弹出打开。在调试器中,您可以在gdb中输入任何您想要的内容。您可以使用p [someObj someMethod]
打印断点范围内的内容。gdb 是一个强大的实用程序,在整个网络上都有很好的文档记录。
这将尽可能接近我认为你所追求的。这在编译语言中只是一件更笨重的事情,因为eval
在 Objective-C 中没有。
据我所知,目前最接近 REPL 的方式确实是通过调试器(即 GDB 或 LLVM 调试器 LLDB)。
对于纯 C,有CCons。
Apple 的 Objective-C API(尤其是 Foundation)中的大多数东西也有直接的 C 等价物(例如CFRelease(obj);
,与 相同[obj release];
),您可以在 CCons 中使用它们。
CCons 建立在 LLVM 和 Clang 之上,它们也支持 Objective-C。可能可以扩展 CCons 以支持 Objective-C。
CoderPad 的“试用”为包括 objc 在内的数以百万计的语言提供了面向公众的仅限自我的 REPL!!!我刚刚使用它,它对他们来说确实是一个很好的销售工具(我不隶属于他们;他们为面试编码人员的人制作工具)。https://coderpad.io/
在Gambit Objective-C项目中,似乎有人尝试创建基于 Scheme 的 REPL。
Ruby Motion中的 REPL也应该适用于探索目的(不过我自己没有尝试过)。