Objective-C有REPL吗?
我正在学习Objective-C,并且非常缺少来自Python背景的REPL。
答案 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以获取更多信息。