嗨,我正在研究iPhone开发,而Objective-C不是我的首选语言.据我所知,目前Ruby还不能用于与iPhone上的Cocoa Touch交谈.
所以我的问题是,我错了吗?我可以在iPhone上使用Ruby来开发Cocoa Touch应用程序吗?iPhone上的Ruby的未来是什么样的?
现在你可以使用RubyMotion了
在iPhone OS中,如果您尝试使用它来将可写的内存部分标记为可执行文件,则mprotect()将失败.这打破了像RubyCocoa(可能还有MacRuby)这样的桥梁,它们使用libffi在运行时创建Objective-C方法处理程序.我认为这是设计原因,因为并非总是如此.
最终,这更多的是平台政治而不是技术问题,但存在技术解决方案.而不是在运行时生成自定义方法处理程序,而是预编译根据需要分配的可重新配置的池,实质上使桥接过程完全由数据驱动.据我所知,这还没有在RubyCocoa或MacRuby中完成.
另一个需要考虑的重要事项是编译的Ruby和RubyCocoa运行时可能比编译的Objective-C应用程序大得多.如果这些库在iPhone上可用,这不是问题,但就目前而言,即使您使用RubyCocoa,您也可能不希望将它用于您分发的应用程序.
不,你是对的.目前,并且很可能在可预见的未来,Ruby将不再是一种选择,至少对于AppStore应用程序而言.没有理由你不能在Jailbroken手机上做到这一点,但Apple非常愿意与Objective C进行官方开发.
作为一个了解多种不同语言的程序员,你会感觉更好 - 将Objective-C视为一个很好的学习机会.
我发现你用其他语言学到的东西常常会让你成为一个更好的程序员,并且会让你对你已经知道的其他语言有新的见解.
rhomobile是在iPhone上运行ruby代码的选项,但它本质上是Web应用程序开发.Web服务器在iPhone上本地运行,您的ruby代码呈现为标准客户端Web技术(html/css/javascript).
http://rhomobile.com/
实际上,红宝石可可桥根本不尴尬; 事情工作非常顺利,直到IB等连接插座.结果代码是美好的.
至于iPhone开发,如果你想要一个官方的AppStore应用程序,不幸的是你运气不好.苹果决定了iPhone的对象- C /可可触摸,并有一个在SDK许可证说的事情之一,他们的条款将拒绝是有一个语言解释器/ JIT编译器的应用程序,所以你不能添加一个Ruby解释器在你的应用程序自己.
关闭主题,但搞笑,这就是为什么iPhone的Flash是吹烟的原因.根据Apple的许可证,即使他们想要,他们也无法将一个瑞士法郎玩家带到AppStore.