經過一段時間的學習,看文檔,算是對Mac OS,Objective C有了一些基本的瞭解,直正要學會iphone 開發還是要通過實戰。在選擇開發工具,對於選擇XCode+Objective C 還是用 MonoTouch 幾經反覆,經過激烈的心理鬥爭,最終選擇兩種都支援 . 我的目標是將地圖開發包移植到 iPhone (iOS)和 Mac OS上,原始代碼是Java 和 C# ,似乎選擇 MonoTouch 是個正確的選擇,而且事實上.Net 平台上C#代碼基本上可以不用修改在MonoTouch 編譯通過,移植工作量很小,似乎沒什麼挑戰性。另外經過幾周的Objective C和 Cocoa Touch學習,對於開發人員來說XCode+Objecitve C實在不是什麼好用的開發環境,Objective C本質上還是C,重新回到用C寫代碼真是不習慣,滿腦的指標又回來。。。
但用MonoTouch 基本上沒什麼工作量,也就不能較深入的瞭解iOS,另外用MonoTouch也有兩個比較大的缺點:一是編譯後可執行程式較大,iphone不帶.Net 運行環境,MonoTouch 編譯後的程式需要包含MonoTouch運行環境,我查到網上一個資料,一個簡單的”Hello world”,用Objective C寫,最後大約50k,而用MonoTouch大約是5M. 另一個缺點可能是致命的,不是技術上的而是來自Apple限制,Apple在新的開發人員協議中明確指出在iphone寫程式只能是C,C++,Objective C或是JavaScripts,有點變態的規定,儘管Apple很難強制執行這個政策,但對用MonoTouch開發iphone 4還是一個很大的風險。最終我還是決定兩個都支援。其實主要是支援Objective C 介面。MonoTouch 介面支援工作量很小。
下面就說說移植的工作量,在後面的文章中陸續介紹在移植中碰到的問題及解決方案,C#和Objective C是兩種異常迥異的語言,.Net Framework 和 Cocoa Touch Framework 也大不相同。移植工作是一個非常有挑戰性的工作:)。
是引路蜂地圖開發包的包之間關係圖。其中綠色為對外開放的API.
所用的平台API涉及到 String, Collections ( Array, Hashtable etc) (Util), Network (Http etc) ,Ajax (Json), 檔案操作 (RMS),加密解密 (Crypto),二維圖形 (Drawing) ,最後是地理資訊系統(GIS)。
這些平台API在 .Net Framework 和 Cocoa Touch 實現不同,C#和 Objective C文法不同,都給移植增加了工作量。在之後的文章會慢慢介紹。
摘自 引路蜂移動軟體