你可以在Ruby中开发原生的iPhone应用程序吗?

嗨,我正在研究iPhone的发展,Objective-C不是我的首选语言。 就目前来看,在这个时候,Ruby还不能用来和iPhone上的Cocoa Touch进行交stream。

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

不,你是对的。 目前,很可能在可预见的未来,Ruby将不会成为一种select,至less对于AppStore应用程序来说。 在越狱手机上没有理由不能做到这一点,但是苹果公​​司与Objective C的官方发展相得益彰。

现在你可以用RubyMotion

在iPhone操作系统中,如果尝试使用mprotect()将可写的内存部分标记为可执行文件,mprotect()将会失败。 这打破了RubyCocoa(可能是MacRuby)之类的桥梁,它们使用libffi在运行时创buildObjective-C方法处理程序。 我相信这是devise的,因为情况并非总是如此。

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

另一个重要的事情要考虑的是,编译的Ruby和RubyCocoa运行时可以比编译的Objective-C应用程序大得多。 如果这些库在iPhone上可用,这不会是一个问题,但现在,即使你有RubyCocoa的工作,你可能不希望使用它分发的应用程序。

作为熟悉许多不同语言的程序员,您最好是将Objective-C视为一个良好的学习机会。

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

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

http://rhomobile.com/

事实上,rubycocoa桥根本不笨拙, 事情工作非常顺利,直接连接到IB等网点。由此产生的代码是美丽的。

至于iPhone的开发,如果你想要一个官方的AppStore应用程序,不幸的是你运气不好。 苹果公司规定iPhone是Obj-C / Cocoa Touch,SDK许可中有一条规定,他们拒绝一个应用程序的一个是有一个语言解释器/ JIT编译器,所以你不能添加一个Ruby解释器在你的应用程序自己。

脱离话题,但是很搞笑,这就是为什么Flash for iPhone是Adobe吹黑烟的原因。 根据苹果公司的许可,即使他们想要,他们也不能把swf玩家带到AppStore上。

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

你可能想看看shinycocos 。 它是iPhone的Objective-C游戏编程框架cocos2d-iphone的一个子项目。

我还没有玩过,但从git自述我推断它捆绑Ruby 1.9.1到您的应用程序。

我安装了Cydia的ruby软件包,在我的iPod Touch 1G上越狱了3.1.3:

图片

似乎工作。

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

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

听起来不错,不是吗? 😉

不,您不能在Ruby中创buildiOS本机应用程序。 对于mac和iOS本机应用程序只有两种select: –

Objective CSwift编程语言

教程: –

Objective C官方教程

苹果公司的Swift编程语言教程

如果你熟悉Ruby,只想用Ruby创buildiOS应用程序。 Ruby Motion可以为你提供一个跨平台的select,但它不是免费的。

跨平台

  • RubyMotion
  • Xamarin需要.NET技能
  • appcelerator需要 HTML,XML,CSS,JS技能
  • 手机 HTML,XML,CSS,JS所需的技能

我想现在不能工作,但我想象你最终能够使用MacRuby来构buildiphone应用程序。 苹果正在做很多工作

以下是一篇描述如何构build普通cocoa应用的ADC文章的链接

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

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

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

有一个开源的Ruby-Cocoa桥梁,你可能会尝试工作。 但是我认识到,Ruby和ObjC之间有一点阻抗不匹配,使得使用起来有些尴尬。

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

无论是哪种情况,build立一座桥梁可能都需要对Objective C运行时更熟悉,而不是仅仅学习如何编写Cocoa Touch应用程序,这可能首先破坏了Cocoa Touch应用程序。

目前并非如此,苹果改变了他们的政策,看看ShinyCocos,是一款针对Cocos2D-iphone游戏框架的ruby绑定。

https://github.com/funkaster/shinycocos

一个可能的解决scheme是创build一个应用程序,例如包含ruby-vm的大米库(google it)。 我认为你将能够创build你可以暴露给ruby的c ++包装器,从而为使用ruby进行iphone开发创造一个环境。 这可能需要很多工作,尽pipe^^