代码之家  ›  专栏  ›  技术社区  ›  BefittingTheorem

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

  •  49
  • BefittingTheorem  · 技术社区  · 16 年前

    嗨,我正在研究iPhone开发,Objective-C不是我的首选语言。据我目前所知,Ruby目前无法在iPhone上与Cocoa Touch对话。

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

    17 回复  |  直到 13 年前
        1
  •  75
  •   gimenete    13 年前

    现在你可以和 RubyMotion

        2
  •  49
  •   Tim Burks    16 年前

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

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

    另一个需要考虑的重要问题是,编译后的Ruby和RubyCocoa运行时可以比编译后的Objective-C应用程序大得多。如果这些库在iPhone上可用,这不会是一个问题,但就目前而言,即使你有RubyCocoa工作,你可能也不想将其用于你分发的应用程序。

        3
  •  22
  •   Ben Gottlieb    16 年前

    不,你说得对。目前,在可预见的未来,Ruby将不是一种选择,至少对于AppStore应用程序来说是这样。你没有理由不能在越狱的手机上做到这一点,但苹果公司已经与Objective C达成了官方开发协议。

        4
  •  12
  •   Kendall Helmstetter Gelner    16 年前

    作为一名精通多种不同语言的程序员,你最好把Objective-C看作是一个很好的学习机会。

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

        5
  •  8
  •   pfeilbr    16 年前

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

    http://rhomobile.com/

        6
  •  7
  •   Jon Raphaelson    16 年前

    事实上,红宝石可可桥一点也不尴尬;事情进展得非常顺利,包括连接IB的插座等。生成的代码非常漂亮。

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

    离题,但有趣的是,这就是为什么iPhone的Flash是Adobe在冒烟。根据苹果的许可证,即使他们想让swf播放器进入AppStore,他们也无法做到。

        7
  •  4
  •   Adam Blum    15 年前

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

        8
  •  4
  •   Radamanthus    15 年前

    你可能想看看 shinycocos 这是一个儿童项目 cocos2d-iphone ,一个用于iPhone的Objective-C游戏编程框架。

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

        9
  •  4
  •   Community CDub    8 年前

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

    image

    似乎奏效了。

    至于可可触感,我认为情况完全不同。

        10
  •  2
  •   fro_oo    15 年前

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

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

        11
  •  2
  •   Mayank Jain Pushpendra Rathor    10 年前

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

    语言 Swift编程语言

    教程:-

    Apple's official tutorial on Objective C

    Apple's official tutorial on Swift Programing Language

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

    跨平台

        12
  •  1
  •   Orion Edwards    16 年前

    我想它现在不起作用,但我想你最终可以使用MacRuby构建iphone应用程序。苹果公司正在为此投入大量工作

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

        13
  •  1
  •   Lee    16 年前

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

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

    要了解如何安装、运行它和其他想法,请访问tetontech.wordpress.com

        14
  •  0
  •   Menkboy    16 年前

    有一个开源 Ruby-Cocoa bridge 你可以试着去工作。但我推测Ruby和ObjC之间存在一些阻抗不匹配,这使得使用起来有点尴尬。

        15
  •  0
  •   Louis Gerbarg    16 年前

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

    在任何一种情况下,搭建一座桥可能都需要比学习如何编写Cocoa Touch应用程序更熟悉Objective C运行时,这可能会从一开始就失去意义。

        16
  •  0
  •   norman784 Ruben Martinez Jr.    13 年前

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

    https://github.com/funkaster/shinycocos

        17
  •  -1
  •   Jim    15 年前

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