你能用Ruby开发原生的iPhone应用程序吗?

时间:2008-10-20 19:51:14

标签: iphone ruby cocoa-touch ios

您好我正在研究iPhone开发,而Objective-C并不是我的首选语言。据我所知,目前Ruby还不能用于与iPhone上的Cocoa Touch交谈。

所以我的问题是,我错了吗?我可以在iPhone上使用Ruby来开发Cocoa Touch应用程序吗? iPhone上的Ruby的未来是什么样的?

17 个答案:

答案 0 :(得分:73)

现在您可以使用RubyMotion

答案 1 :(得分:48)

在iPhone OS中,如果您尝试使用它来将可写的内存部分标记为可执行文件,则mprotect()将失败。这打破了像RubyCocoa(可能还有MacRuby)这样的桥梁,它们使用libffi在运行时创建Objective-C方法处理程序。我认为这是设计原因,因为并非总是如此。

最终,这更多的是平台政治而不是技术问题,但存在技术解决方案。而不是在运行时生成自定义方法处理程序,而是预编译根据需要分配的可重新配置的池,实质上使桥接过程完全由数据驱动。据我所知,这还没有在RubyCocoa或MacRuby中完成。

另一个需要考虑的重要事项是编译的Ruby和RubyCocoa运行时可能比编译的Objective-C应用程序大得多。如果这些库在iPhone上可用,这不是问题,但就目前而言,即使您使用RubyCocoa,您也可能不希望将它用于您分发的应用程序。

答案 2 :(得分:22)

不,你是对的。目前,并且很可能在可预见的未来,Ruby将不再是一种选择,至少对于AppStore应用程序而言。没有理由你不能在Jailbroken手机上做到这一点,但Apple非常愿意接受Objective C进行官方开发。

答案 3 :(得分:11)

作为一名懂得多种语言的程序员,你最好还是把Objective-C视为一个很好的学习机会。

我发现你用其他语言学到的东西常常会让你成为一个更好的程序员,并且会让你对你已经知道的其他语言有新的见解。

答案 4 :(得分:8)

rhomobile是在iPhone上运行ruby代码的选项,但它本质上是Web应用程序开发。 Web服务器在iPhone上本地运行,您的ruby代码呈现为标准的客户端Web技术(html / css / javascript)。

http://rhomobile.com/

答案 5 :(得分:7)

实际上,红宝石可可桥根本不尴尬;事情工作非常顺利,直到IB等连接插座。结果代码非常漂亮。

至于iPhone开发,如果你想要一个官方的AppStore应用程序,不幸的是你运气不好。 Apple声称iPhone是Obj-C / Cocoa Touch,并且SDK许可证中有一个条款说他们拒绝某个应用程序的东西之一就是拥有一个语言解释器/ JIT编译器,所以你无法自己在应用中添加红宝石口译员。

偏离主题,但非常有趣,这就是为什么iPhone的Flash是Adobe吹烟的原因。根据Apple的许可证,即使他们想要,他们也无法让一名瑞士法郎玩家进入AppStore。

答案 6 :(得分:4)

我在3.1.3上的iPod Touch 1G上安装了Cydia的ruby包:

image

似乎工作。

现在至于cocoa-touch,这是一个完全不同的故事我会假设。

答案 7 :(得分:4)

嗯,Rhodes(Rhomobile)允许你在iPhone和所有其他智能手机上使用本机应用程序。是的,我们利用WebUIView控件进行渲染。但我们允许所有设备功能和同步本地数据。

答案 8 :(得分:4)

您可能需要查看shinycocos。它是cocos2d-iphone的子项目,是iPhone的Objective-C游戏编程框架。

我还没有玩过它,但是从git README我推断它将Ruby 1.9.1捆绑到你的应用程序中。

答案 9 :(得分:2)

不,你不能在Ruby中创建iOS本机应用程序。 Mac和iOS的原生应用只有两种选择: -

目标C Swift编程语言

<强>教程: -

Apple's official tutorial on Objective C

Apple's official tutorial on Swift Programing Language

如果您熟悉Ruby并且只想通过Ruby创建iOS应用程序。 Ruby Motion,可以为您提供跨平台选项,但它不是免费的。

<强>跨平台

答案 10 :(得分:2)

看看http://www.appcelerator.com/products/titanium-mobile/ “使用Web技术构建的原生iPhone和Android应用程序。”

听起来不错不是吗? ; - )

答案 11 :(得分:1)

您不必使用Objective-C来编写iPhone应用程序。如果您使用QuickConnectiPhone http://sourceforge.net/projects/quickconnect/,则可以使用JavaScript,CSS和HTML完全编写它,并且仍然具有可安装的应用程序而非Web应用程序。

如果你知道ruby,你可能已经在使用JavaScript了。

要了解如何安装,运行它,其他想法转到tetontech.wordpress.com

答案 12 :(得分:1)

我想它现在不会起作用,但我想你最终能够使用MacRuby构建iphone应用程序。 Apple正在投入大量的工作

Here's a link to an ADC article describing how to build normal cocoa apps

答案 13 :(得分:0)

Ruby Cocoa桥可能无法正常工作。动态语言的大多数桥梁需要生成可执行的thunk(手动或使用libffi)。更有限的桥梁(对于更多静态语言)可能没有这样的问题。

在任何一种情况下,建立一个桥梁可能需要变得更熟悉Objective C运行时,而不是学习如何编写Cocoa Touch应用程序,这可能首先打破了这样做的目的。 / p>

答案 14 :(得分:0)

目前不是这样,Apple改变了他们的政策,看看ShinyCocos,是Cocos2D-iphone游戏框架的ruby绑定。

https://github.com/funkaster/shinycocos

答案 15 :(得分:0)

有一个开源Ruby-Cocoa bridge你可能会尝试开始工作。但我认为Ruby和ObjC之间存在一些阻抗不匹配,这使得使用它有点尴尬。

答案 16 :(得分:-1)

一种可能的解决方案是创建一个应用程序包装,例如包含ruby-vm的大米库(google it)。我估计你可以创建你可以暴露给ruby的c ++包装器,从而为ruby开发iphone开发环境。这可能需要很多工作,但^^