首页 > 编程语言 >做iOS开发我为什么弃用Objective-C而选择RubyMotion?

做iOS开发我为什么弃用Objective-C而选择RubyMotion?

时间:2022-12-27 11:36:43浏览次数:59  
标签:弃用 title Ruby iOS RubyMotion Objective type


Hendrik Mans是德国汉堡市的一名程序员,他从事iOS开发已有很长一段时间了,起初他一直使用Objective-C语言进行编程而忽视了RubyMotion。从前他认为 ​​RubyMotion​​只是个介于Ruby和Objective-C之间的交叉编译器,但后来他发现自己完全错了,现在Hendrik已彻底改变了自己的想法。

RubyMotion

关于Ruby语言

Hendrik以前不仅从未用过 ​​Ruby​​,还没少嘲笑过它。而现在Hendrik却认为,Ruby绝对是一种有着清晰漂亮语法的编程语言。Ruby是一种让你灵活机动的编程语言。

有时我们可能会对某种语言嗤之以鼻,然后说:“我绝不会在这种语言上浪费时间。”但Ruby一定不会让你这么说。Ruby强大的元编程特性能够帮助建立 ​​领域专用语言​​(DSL);Ruby精炼的语法能帮助我们有效解决一些特定问题和处理许多复杂问题的细节。

Ruby语言具有强大的反射机制与元编程功能

更重要的是,Java、PHP、Perl以及Objective-C都不具备的,而Ruby具备的特征是:Ruby有一群追求完美的铁杆粉丝。Ruby程序员们选择Ruby,意味着他们不仅仅选择了一种编程语言,还选择了一种生活方式。Ruby粉丝们所追求的是一种极简的、精致的编程体验。

RubyMotion的优势

RubyMotion是完全由Ruby语言编译的二进制实现,它基于iOS构建并直接与iOS API封装,开发者可以访问所有公开的iOS API,也可以使用第三方的Objective-C库和Gems。RubyMotion能够让Rails开发者编程时感到得心应手。

Rake是RubyMotion的创建和执行工具,它的程序是在 ​​REPL​​环境下执行的。应用程序可在iOS模拟器上运行,RubyMotion提供一个交互式的Shell用来即时编码和调试,能够方便地实现交互式检查和修改。

Hendrik对于RubyMotion是这样评价的:在iOS开发方面,RubyMotion的核心思想是用优美的Ruby语言代替丑陋的Objective-C语言。

RubyMotion为Ruby程序员(尤其是那些因Objective-C和Cocoa Touch犯难的Ruby程序员)提供了一个iOS开发的入口。尽管RubyMotion诞生还不到一年的时间,但它为使用Ruby语言进行高效开发提供了很大便利。

RubyMotion的劣势

1. 不提供免费版本。许多开发者不愿尝试RubyMotion多半是因为它不免费,尽管199美金的价格物有所值,但是开发者们往往需要先体验产品,再考虑付费购买。如果未来RubyMotion能够提供免费或试用版本,将会吸引更多的开发者前来参与。

2. 缺少Ruby高手。正因为RubyMotion比较年轻,所以RubyMotion社区( ​​RubyMotion community​​)缺少Ruby编程高手,社区中许多开发者的作品都比较简单,比较初级。

3. 不能彻底摆脱Xcode。使用RubyMotion还是需要Xcode提供的SDK、模拟器以及数字签名功能,只不过不需要全程使用Xcode,尤其是在撰写代码的时候。

正确看待RubyMotion

在一些苹果开发社区中,我们时不时会看到一些污蔑RubyMotion的言论。如果你经常浏览​​HackerNews​​上对于RubyMotion的讨论,你会很容易发现人们对RubyMotion不加遮掩的蔑视。

RubyMotion创始人Laurent Sansonetti

Rails也好,RubyMotion也好,都是前辈们呕心沥血的作品,是从知识、代码、编程技巧等多个层面的经验总结,他们的目的无非是帮助大家用更精炼的代码进行编程,使得程序开发更为简便。所以对于新兴的编程语言、工具,大家大可不必投以藐视的态度,这也是对前辈们劳动成果的一种尊重。

总结

去年8月, ​​RubyMotion创始人Laurent Sansonetti在接受CSDN记者采访​​时说:“为什么开发者应该使用RubyMotion?俩字:简单。如果你会Ruby,知道Rake,知道一些常用命令,接下来只需了解一下iOS的API,就可以着手开发iOS应用了。”

那些经验丰富的、充满智慧的程序员们发明了各种编程语言和开发工具,我们只是在他们的基础之上编写应用,这让我们轻而易举地就站在了巨人的肩膀上,何乐而不为呢?

诚然,RubyMotion和Objective-C都各有利弊,我们需要做的不是过度偏激地评价,而是选择一种最适合自己的编程语言罢了。(编译/杨依帆 责编/张宁)

[附]RubyMotion的学习资源:

例子代码:

using this:


@form = Formotion::Form.new({
sections: [{
title: "Register",
rows: [{
title: "Email",
key: :email,
placeholder: "[email protected]",
type: :email,
auto_correction: :no,
auto_capitalization: :none
}, {
title: "Password",
key: :password,
placeholder: "required",
type: :string,
secure: true
}, {
title: "Password",
subtitle: "Confirmation",
key: :confirm,
placeholder: "required",
type: :string,
secure: true
}, {
title: "Remember?",
key: :remember,
type: :switch,
}]
}, {
title: "Account Type",
key: :account_type,
select_one: true,
rows: [{
title: "Free",
key: :free,
type: :check,
}, {
title: "Basic",
value: true,
key: :basic,
type: :check,
}, {
title: "Pro",
key: :pro,
type: :check,
}]
}, {
rows: [{
title: "Sign Up",
type: :submit,
}]
}]
})

@form_controller = Formotion::FormController.alloc.initWithForm(@form)
@window.rootViewController = @form_controller



1. Clay Allsopp的 ​​RubyMotion Tutorial​​。

2. DSL程序范例: ​​sugarcube​​​和 ​​BubbleWrap​

3. 建立UIKit视图的DSL : ​​SimpleView​

4. 生成iOS表单视图的DSL: ​​Formotion​

5. 打包核心数据的DSL: ​​MotionData​

6. ​​rubymotion-wrappers.com​​中拥有更多的RubyMotion DSL。

相关阅读:

​​用Ruby开发iOS本地应用的最佳实现:RubyMotion​​ 

​​RubyMotion之父:Ruby是目前替代Objective-C的最佳iOS开发语言​​ 

文章来源:

​Sloblog-RubyMotion!​​ 

​Sloblog-Adventures in RubyMotion, Part 2​​ 

标签:弃用,title,Ruby,iOS,RubyMotion,Objective,type
From: https://blog.51cto.com/u_15923385/5971841

相关文章

  • 如何在iOS和Android上选择一个JavaScript 引擎进行应用开发
    在我开始使用​​OpenAphid-Engine​​​的时候,已经有几种类似的iOS/Android项目.这些商业项目或者开源项目使用JavaScript实现代码特性。比如,​​Titanium​​​ 和​​P......
  • 使用面向 iOS 的本机插件扩展 PhoneGap
    本文细致探讨了Xcode(以iOS设备为目标)中的PhoneGap(也称为ApacheCordova)应用程序本机插件。如果您刚开始接触PhoneGap或者需要回顾PhoneGap基础知识,请先阅读 ​​......
  • PhoneGap插件开发示例(iOS)
    PhoneGap插件开发示例(iOS) 重要提示:如果你同时使用phonegap(cordova)和sencha-touch,一定先引入phonegap的js文件,否则你开发的插件可能不被调用!PhoneGap相关介绍:​​Pho......
  • IOS私有API的使用
    首先要使用class-dump和dumpFrameworks.pl工具将ios的framework导出来。以下是工具的​​下载​​地址:class-dump下载地址http://www.codethecode.com/pr......
  • 谷歌为iOS开发者推出地图服务SDK
    12月13日消息,谷歌没有满足于在iOS平台推出一个独立的地图应用,他们希望其他开发人员能把谷歌地图服务整合他们自己的应用中去。因此,谷歌推出了一个地图服务SDK,它通过URL方......
  • iOS使用ffmpeg播放rstp实时监控视频数据流
    一、编译针对iOS平台的ffmpeg库(kxmovie)近期有一个项目,需要播放各种格式的音频、视频以及网络摄像头实时监控的视频流数据,经过多种折腾之后,最后选择了kxmovie,kxmovie项目已......
  • axios、代理(proxy)简单使用
    axios简单使用例子importaxiosfrom'axios'exportdefault{name:'Test',data(){return{msg:"Welcome"}},mounted(){//get......
  • 在iOS中使用NSURLProtocol进行网络代理
    在iOS中使用NSURLProtocol进行网络代理一引言网络能力是互联网应用程序必不可少的功能。随着应用程序的复杂,对网络的依赖性也会逐渐增高。如何统一的处理请求头,统一的处理......
  • Axios + Mockjs
    Mock可以用来模拟服务端响应请求,让前端人员自己测试接口直接上案例:Axios//request.jsimportAxiosfrom'axios'//先创建一个axios实例,无需配置baseURL,只是模......
  • SDL_AudioSpec
    这篇主要讲把视频的声音播放出来audioStream=-1;for(i=0;i<pFormatCtx->nb_streams;i++){if(pFormatCtx->streams[i]->codec->codec_type==......