做iOS開發我為什麼棄用Objective-C而選擇RubyMotion?
Hendrik Mans是德國漢堡市的一名程式設計師,他從事iOS開發已有很長一段時間了,起初他一直使用Objective-C語言進行程式設計而忽視了RubyMotion。從前他認為 RubyMotion只是個介於Ruby和Objective-C之間的交叉編譯器,但後來他發現自己完全錯了,現在Hendrik已徹底改變了自己的想法。
RubyMotion
關於Ruby語言
Hendrik以前不僅從未用過 Ruby,還沒少嘲笑過它。而現在Hendrik卻認為,Ruby絕對是一種有著清晰漂亮語法的程式語言。Ruby是一種讓你靈活機動的程式語言。
有時我們可能會對某種語言嗤之以鼻,然後說:“我絕不會在這種語言上浪費時間。”但Ruby一定不會讓你這麼說。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
3. 建立UIKit檢視的DSL : SimpleView
4. 生成iOS表單檢視的DSL: Formotion
相關閱讀:
文章來源:
相關推薦
做iOS開發我為什麼棄用Objective-C而選擇RubyMotion?
Hendrik Mans是德國漢堡市的一名程式設計師,他從事iOS開發已有很長一段時間了,起初他一直使用Objective-C語言進行程式設計而忽視了RubyMotion。從前他認為 RubyMotion只是個介於Ruby和Objective-C之間的交叉編譯器,但後來他
ios面向切面AOP(上) Objective-c版本
建立一個UIViewcontroller的category </pre><pre name="code" class="objc">#import "UIViewController+AOP.h" #import <objc/runtime.h> @imple
[iOS] for each loop in objective c for accessing NSMutable dictionary
如何瀏覽所有NSMutableDictionary 裡的內容? NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init]; 解答: for (NSString* key in xyz) { id value = [xyz objectF
IOS基礎:深入理解Objective-c中@class的含義
objective-c中,當一個類使用到另一個類時,並且在類的標頭檔案中需要建立被引用的指標時, 如下面程式碼: A.h檔案 #import "B.h" @interface A : NSObject { B *b; } @end
IOS開發基礎篇之──Object-C 實踐Queue容器
原貼地址:http://blog.csdn.net/cloudhsu/article/details/6589313Object-C同樣沒有提供Queue容器,因此我也自己實踐了一個#import <Foundation/Foundation.h>@interfa
初級篇-做iOS開發你需要知道的
寫在前面的話: 此blog為自己鞭策自己用,大概會從程式設計零基礎一直寫到開發一個iOS的完整專案吧,也來湊熱鬧記錄記錄自己的程式設計之路。Whatever,若有人看到此blog,恰好此blog中的內容對你有用,那就是美事一件了。 自己不是什麼大牛,但總有人沒有我牛,也總有
用objective-c 實現常用演算法(冒泡、選擇、快速、插入)
原文網址:http://www.360doc.com/content/14/0508/15/11029609_375813213.shtml 研究了下用oc實現常用的演算法,參考了一些資料後自己用程式碼檢驗了下,以下程式碼均測試可用。其中arr引數是一個可變陣列,其中存
ios 開發的好用的第三方框架。。。。
第三方控制元件類: 1、提示框MBProgressHUD: 是一款非常強大的、提供多種樣式的提示框。使用起來簡單、方便。可以在GitHub上檢視具體的使用方法。 2、無限迴圈、自動圖片輪播器 SDCycleScrollView 3、DKNightVersion是一個支
iOS面試題系列之Objective-C相關
1、簡述你專案中常用的設計模式。它們有什麼優缺點? 常用的設計模式有:代理、觀察者、單例。 (1)單例:它是用來限制一個類只能建立一個物件。這個物件中的屬性可以儲存全域性共享的資料。所有的類都能訪問、設定此單例中的屬性資料。 優點:是它只會建立一個物件容易
opencv在ios上的簡單實現[objective-c&c++]
網上找過很多資料,不是缺少庫的引用就是缺少備註表述 所以自己實現一下並記錄下來 // // ViewController.m // h // // Created by Friderick
IOS開發時間格式轉換之──C語言中time_t資料型別轉為NSString型別
既然time_t實際上是長整型,到未來的某一天,從一個時間點(一般是1970年1月1日0時0分0秒)到那時的秒數(即日曆時間)超出了長整形所能表示的數的範圍怎麼辦?對time_t資料型別的值來說,它所表示的時間不能晚於2038年1月18日19時14分07秒。為了能夠表示更久遠的時間,一些編譯器廠商引入了64位
【iOS沉思錄】深思Objective-C中的property屬性
OC中的屬性 屬性(Property)是Objective-C語言的其中一個特性,它把類物件中的資料變數及其讀寫方法統一封裝起來,是對傳統C++中要重複為每個變數定義讀寫方法的一種封裝優化,OC將這些變數封裝為屬性變數,系統可自動生成getter和se
IOS開發筆記12-Object-C中的物件與記憶體
前言 Object-C的記憶體管理機制與java那種全自動的垃圾回收機制是不同的,它本質上還是c語言的手動管理方式,只不過稍微加了一些自動方法。 指標和指標的值 以下程式宣告一個指向NSDate例項的變數: #import <Found
iOS開發——ActionSheet的使用與彈出選擇對話方塊
在我們的iOS開發中,常會見到如下介面的需求:。【使用ActionSheet實現】(1)實現程式碼如下:#import "ViewController.h" @interface ViewController ()<UIActionSheetDelegate
iOS開發 之字型型別的設定與選擇
宣告: 文章轉自新浪博主:Apple_ 小熊貓 原文地址:http://blog.sina.com.cn/s/blog_b22973cf0101auqv.html。轉載時請附帶宣告。 ios中的字型: 字型是圖形使用者介面顯示文字的基礎。Co
iOS開發核心語言Objective C —— 面向對象思維、setter和getter方法及點語法
才幹 各路 alt .net 行為 變量的作用域 fadein 格式 讀取 本分享是面向有意向從事iOS開發的夥伴們。或者已經從事了iOS的開發人員。假設您對iOS開發有極高的興趣,能夠與我一起探討iOS開發。一起學習,共同進步。假設您是零基礎,建議您先
大神幫我做下這個題要用C語言不要C++
2.0 大神 b2c 17.1 smd baidu html ++ quest http://baobao.baidu.com/question/9aba706e437305e0b1c98c73af45448e.html?18/Uf=sMDs http://baobao.
iOS Objective-C與Swift開發過程的詳細比較
前段時間,本人同時開發了兩個專案,一個用的OC,一個用的Swift。在使用中對兩種語言進行一次梳理與比較。 基礎檔案 OC Swift OC程式裡,一個類會有兩個檔案,.h和.m。.h可以寫屬性、方
為什麼我堅持用Go語言做Web應用開發框架?
點選上方“CSDN”,選擇“置頂公眾號”關鍵時刻,第一時間送達!【CSDN編者按】很多情況下,企
iOS開發應該選擇Objective-C還是Swift
iOS開發需要知道Objective-C 當Apple釋出了Swift之後,我聽見人們都說:“趕快,我現在可以成為一個不用學習Objective-C的iOS開發者了。”在這裡我有三個建議想給這些人們。 1.如果你想成為一個iOS開發者,你仍然需要學習Objective-