REP-for Objective-C

时间:2011-02-02 10:03:17

标签: objective-c ios4 read-eval-print-loop

Objective-C有REPL吗?

我正在学习Objective-C,并且非常缺少来自Python背景的REPL。

6 个答案:

答案 0 :(得分:9)

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 bridge。只需运行Python,执行import objc,就可以了。还有Ruby和Common Lisp等桥梁。

当然,所有这些REPL只允许你编写动态代码来与Cocoa交互,但是它们不会让你编写实际的Objective-C代码,并且可以动态地解释或编译它以与它进行交互。所以没有一个真正符合你原来的要求。

答案 1 :(得分:4)

当触发断点时,调试器应该弹出。在调试器中,您可以在 gdb 中键入任何内容。您可以使用p [someObj someMethod]打印出断点范围内的内容。 gdb是一个功能强大的实用程序,在整个Web上都有很好的文档记录。

这将与你认为自己追求的一样接近。在编译语言中,这只是一个非常笨重的事情,因为Objective-C中没有任何eval

答案 2 :(得分:3)

据我所知,目前最接近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。

答案 3 :(得分:1)

'试用' CoderPad为包括objc在内的数以万计的语言提供面向公众的自我REPL!我只是用它而且它对他们来说真的是一个很好的销售工具(我没有附属;他们为面试编码人员的人制作工具)。 https://coderpad.io/

答案 4 :(得分:0)

Gambit Objective-C项目中似乎尝试创建基于Scheme的REPL。

Ruby Motion中的REPL也应该有助于探索目的(尽管我自己没有尝试过)。

答案 5 :(得分:0)

是的,REPL在输出窗口中。

“打印对象”

po object

但也执行使用

作为应用程序代码运行的命令
expression i = 5

阅读这篇有趣的full debugging article以获取更多信息。