使用 C# 開發 iOS 程序是一種怎樣的體驗?


開發業務邏輯的時候爽到死,我把一個項目從windows phone移植到ios幾乎沒改過幾行代碼;

編寫界面慘到死,有時想開發一些自定義的控制項需要用objectc,但是,objectc里卻無法調用c#寫的業務邏輯。

所以像react native這種連界面都能跨平台的開發模式才是王道。希望微軟還是加把勁把xamarin收購了然後把自己的uwp推廣到安卓和ios平台。

最後吐槽一下,前年單位用xamarin開發軟體,我用自己的信用卡購買了一年的企業版。然而,xamarin網站居然無恥地默認自動續費,去年又扣了我一年的錢,這筆款公司根本不願意報銷!


一開始我們打算開發一個手機遊戲。

那時候Unity還不流行,聽說有個叫Monogame的東西,完全繼承XNA的衣缽,PC下全程C#開發,免費開源跨平台各種誘人,馬上決定採用。後來準備port到手機上時,它說,你得去搞一個叫做MonoTouch的東西來…… 這玩意兒真心貴啊,Monogame的免費優勢瞬間蕩然無存。

MonoTouch就是後來的Xamarin。VS2015 CTP時,聽說整合了這位老朋友,趕緊去試了一試。結果感覺受到了嬸嬸的欺騙,因為VS2015里只是給了個入口,相當於打了個廣告,Xamarin還得自己去下。這玩意兒官網訪問速度慢的一塌糊塗,介於在牆外和牆內之間。千辛萬苦爬牆出去下載好安裝起來,給了我若干個提示:

  • 想要開發Android程序?先把JDK和Android SDK裝裝好。
    好的,我裝我裝,不就是爬個牆么。
  • 想要開發iOS程序?可以,但是只能開發。你想調試或發布的話,得去找台Mac,裝上Xamarin for Mac。XCode就不用我多說了吧,當然是必須的。
    於是乖乖的搞個虛擬機,憑著幾年前玩黑蘋果的印象把Mac搞起來。
    整個環境架設成功花了我差不多一個工作日。
  • 想要開發WinPhone程序?不用我說了吧……

反正Unity也是這麼用的,我不該指望Xamarin能用起來更方便一點。總之,終於可以開工了。迫不及待地建了個Xamarin.Forms。這東西功能弱我懂,記得有一次有人在評論區跟我爭過,他堅持認為Xamarin.Forms的功能可與WPF媲美。實際上嘛大家知道,除了形似,其他方面沒有可比性。應該來講這東西對幾大移動平台的抽象做的還不錯,如果你不想做什麼標新立異的界面的話,開發效率是非常可觀的。缺陷也有,比如講所有資源都要手動管理,你想使用一張圖片資源?請手動給Android、iOS和WinPhone工程添加。添加一張還不行,因為要適應不同的解析度,光Android你就得添加五張不同大小的。這是為了Pixel Perfect所必須付出的代價,只不過付出的方式略顯痴呆,那我也能理解。

於是我就隨手搗鼓了兩下,添了幾行代碼想向世界問個好。然後開始build試試吧……又給我彈了一堆錯。

首先,我不能同時build (Android或WinPhone)和iOS工程,因為我的Mac是裝在VMWare里的,我要開VMWare就得重啟把Hyper-V關掉;關掉Hyper-V,我的Android或WinPhone模擬器就無法工作了。只能一個一個編。WinPhone和Android工程能順利編過,報了一些warning我查了一查是這個版本的Xamarin的bug,有workaround也好解決;但是調試起來就不是那麼回事情了,我也不清楚是哪裡的毛病總之我搞了一下午沒搞定XDE(WinPhone和Android模擬器),只好發布到我的一台Android備機上調試,算是圓滿成功吧。iOS那邊就一塌糊塗了,Mac上的Build Host各種panic,總算讓我抓住一回不panic了能編譯通過了,XCode那個iOS模擬器又出幺蛾子。所以你讓我怎麼評價呢,可能是我運氣不好吧。總之我花了兩天時間,只成功在Android上跑了個hello world。你說這麼個東西要花8000塊起(Xamarin-跨平台開發工具-Xamarin-CSDN軟體商城),我怎麼下的去手呢?


用 non-official 語言開發能持久成功,除了 web 這個平台還沒有先例(因為 web 就沒有 official 語言)。我以前用的一個很好的軟體,在 Mac with Retina 上市一年多之後還沒支持,官方的理由是「我們用的跨平台庫還不支持 retina」。第三方就是這麼多幺蛾子。

另外這家公司的 legal audit 能力有點問題。首頁的屏幕顯示 Apple logo 這是違反 Apple 的商標授權的。能否屬於 fair use 另說,反正合格的大公司不會找這種麻煩。搞 Apple 的生態系統底層,這點能力欠缺可堪憂。


有買Xamarin的錢 不如買個頂配的Mac

------------------------

另附一片文章: C# is the Best Language for Mobile Development

Eight Reasons C# is the Best Language for Mobile Development | Tamarin Blog

巨硬的推广部門吃dog food都沒Xamarin這麼賣力


何必自找不痛快,自己業餘玩也就罷了,如果是公司項目,還是老實用官方的開發工具,語言比較好。


現在宇宙第一語言從PHP變成C#了嗎?


說「有買Xamarin的錢 不如買個頂配的Mac」的,我也想知道買一個頂配Mac如何分期付款,每個月25刀,而且在付款的期限內有應有的保證,而不是還得不斷地續care。

有的人可能會說,這是INDIE的價格啊(注意只有INDIE是按人/月算的)。這不是廢話嗎,BUSINESS和ENTERPRISE本來就是公司給的,跟你有屁關係啊(逃


不是怕吃螃蟹,是這個螃蟹太貴了,吃不起


如果只是開發ios 還是老實用oc啥的,Xamarin 是來給你開發全平台的。


不知道你們是怎麼查找哪個C#的庫在ios上面不工作的。。。


有個引擎叫Unity3D……


真心不建議,這不是誰好誰壞的問題,這是一個態度問題。

打個比方吧,你開發 Windows 應用程序和 Android App 會用 Objective-C 和 Swift 么,想來不會吧,你還是會去選擇 C# 和 Java。

好,那麼,為什麼開發 iOS App 就要追求使用 C# 呢?

這就好比 iOS App 遵循 iOS UI,Android App 遵循 Material Design 一樣,為一個平台開發軟體,首先要尊重這個平台,這個平台的要求,這個平台的文化,這個平台趨勢、方向,和一些約定俗成的規則。

最後批評一下微軟和谷歌:Office 2016 for Mac 依然沒有遵循 Apple 在 OS X 上的 UI 設計語言,iOS 上的 Chrome 至今還是安卓風,不能不說,給很多人帶了一個壞頭


用Xamarin,不怕死的儘管用。之前簡單的玩過, 感覺Xamarin就是個玩笑!! 大坑比。


坐等輪子哥宣傳C#大法好!


大概和在 Windows 平台用 iTunes 一個感覺吧。


就是安裝好Xamarin破解後,看完教程,然後才發現沒錢買iMac去編譯生成應用的體驗。


做做企業應用挺好的啊,業務代碼復用,UI代碼老老實實用平台相關的


沒有公司要,等著失業吧


沒啥感覺,用Unity開發了,發布到iOS平台就好


你還是需要一台Mac。


除了Xamarin,還有個Apache Cordova 用js和html搭建應用的。

個人感覺,實現結果就好。語言不重要。


Xamarin,就是第三方庫比較少,而且有些要收費,storyboard xib 生成ipa還是得靠Xcode啊


作死體驗?碼農要擁抱變化學學oc swift什麼的,實在不行學react


推薦閱讀:

值得看的C#的開源項目有哪些?
如何看待CE5繼Unity之後又一個支持C#?
使用unity引擎時有哪些禁忌?
如何用C#對論壇進行爬蟲?
C# 里非同步方法該如何理解?

TAG:iOS | iOS開發 | 計算機 | iOS開發者 | C# |