iOS 開發為何很多公司不用 Swift 作為開發語言?

最近求職找 iOS 的開發工作,提前學了 Swift 語言,以為可以找個 Swift 開發的崗位,可事實是去面試了一些公司後他們都要求用 Objective-C,只是把 Swift 作為學習語言。我對於 Objective-C 的方法調用語法特反感,為何不用 Swift 替換呢?


如果你覺得swift只是syntax比objc好看的話,那用不用swift其實沒所謂,那只是一件外衣而已,但是swift確實有比objc好得多的很多東西。

一個語言才出來一年的時間,投入生產環境其實是一種非常激進的做法。其實在一些較大的項目裡面,新技術的更新換代都是非常緩慢的。比如騰訊很多產品,包括微信在內,是去年底的時候才ARC的(具體時間我記不太清了,反正就是很晚),但是ARC是隨著iOS 5出來的,已經過去太久了。類似的還有AutoLayout等等。不是因為開發團隊懶,而是在找到足夠的理由之前,其實沒有動力這樣做,而且會增加不少的學習成本給每一個人。

就像swift這一年那種改動的幅度,每更新一次Xcode就編譯不了,拿來改造QQ這種巨型項目,怎麼想也不合適吧。所以大項目裡面都是偏保守的。

作為個人項目,我自己就被swift整過一次,那個時候在寫一個App,swift出來才沒多久。demo成型了但是Xcode整天崩潰,如果經歷過那個階段的人一定會知道的,還有那個一天出現一百次的語法高亮失敗+閃屏的bug,實在是受不了了我花了一整天的時間把他用objc重寫了,僅僅是因為IDE不穩定。

當然swift一定是未來iOS/Mac開發的主要語言,這是毫無疑問的。所以當然更穩妥的做法應該是當swift更成熟之後項目中逐步引入swift,自己平常寫點什麼還是可以的。


Bug多多啊,幾行程序就把編譯器搞掛了……

struct A& {
var f:B&
var b:B&
var v:T1
}

struct B& {
}

這種質量我腳著還是要再等等。


1. 對於中等規模以上互聯網公司,原有的產品代碼動輒幾十萬量級,iOS開發人員動輒幾十人,平均每年十個版本,要把原先的Objective-C代碼遷移到Swift,工作量是一個天文數字,這還是在不增加現有產品功能,和幾十個開發人員瞬間都掌握Swift,同時所有第三方庫都順利遷移的情況下(這三點任何一個都是天方夜譚)。

2. 對於幾個人的小團隊,技術能力有限,人員流動性強,大部分小團隊,就是一個3年的熟手+1~3個培訓班剛出來的新人的節奏,平均每個人做不到一年。這樣的團隊,要完成幾萬行代碼的遷移,還保證功能性能不出錯,幾乎是不現實的。同時,小團隊大多數情況下技術人員處於弱勢,沒有上頭支持,遷移Swift無從談起。

3. 軟體外包公司,Swift是什麼,可以吃么?趕快拉活出活賺錢養活一家子人啊啊啊。

4. 唯一可能用Swift開發的,只有在技術人員優秀且強勢(還要穩定),同時業務變化不那麼快(Swift畢竟不穩定,庫的支持也不完善,一個功能如果開發卡住還是很傷的)的公司了,這種公司在國內真是少之又少。


在公司里用一項新技術,要區分做事情還是學東西。在項目中使用成熟的技術是對用戶和團隊負責的行為。學東西更個人一些。swift是好東西但不夠成熟。不建議拿公司資源去踩坑。至少我們是不希望首先踩坑的。畢竟我們覺得這些時間精力可以用在更有價值的事情。學門語言從來不是問題。一個有年頭的技術人員,多多少少會幾門。怎麼用工具做出更有價值的事情,才是應該考慮的。


如果組裡沒有個能給swift交patch的,還是先等等吧。出了問題都不知道怎麼辦。你看微博,都是亞一程過去幾個月之後才敢升級PHP版本的…


任何回答都有時限,這個一年前的問題又推到我的timeline上也是緣分啊

我現在一半的項目已經轉swift3,也造了一批輪子來開發的更快

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

因為swift還有很多坑,不夠成熟

另外,如果你要做iOS開發,但是卻對oc很反感,那幾乎肯定你的發展道路會很困難,目前絕大多數NB的輪子都還是oc造的


原因有很多

1.遺留app問題,早期的應用都是objc,維護和開發新功能自然以objc為主

2.iOS7的緊箍咒,目前市面上大部分app都需要支持iOS7,而iOS7不支持動態庫,至少cocoapods,carthage都沒能很好的解決這個問題,只能用一些非主流手段,要等主流最低版本是iOS8才會改善

3.對於一些做sdk的項目你只能用objc

4.swift語法對於只學過objc的人來說一下子上手有難度

5.swift在高速發展當中,語言特性還沒到十分穩定的地步,不太願意大規模的使用

當然你剛開始學習iOS完全可以只學swift,如今的swift完全可以替代objc,找個要swift的團隊,我們團隊就需要swift的人,你會swift做iOS開發,我們是不介意你會不會寫objc代碼的


Swift 的泛型還是不堪大用的,諸如 conditional conformance 這種很基本的東西也不支持,甚至出現了 12 種 Collection protocol 這種笑話。拖到 Swift 4 就好啦。


語言之間並沒有明顯的優劣之分,區別只是生態鏈是否完善。生態鏈中最重要的當屬資源是否足夠,開源框架是否足夠多。從目前網上的開源項目來看,還是OC的居多,且應用時間都比較長,很成熟了。從周圍公司做的項目來看,尤其是一些大公司,還都是在使用OC。所以,我們還是用OC吧,應用層面的技術沒必要趕潮流,只要滿足業務需求,成本低,上手快,資源多就可以了。盲目追趕吃的虧很多啊。


1. 因為一種語言不好看而抗拒一種語言,是很愚蠢的行為。

2. 一個合格的程序員,不是面向過程編碼,不是面向對象編碼,都不是。應該是面向工資編碼。

3. 收人錢財,替人消災,是一個合格的職場人的必要的職業操守。

4. 所以人家讓你用php你也得用。你不會用,你不願意用,絕對不是老闆的問題。

5. oc這種渣渣語言,如果老闆沒需求,打死我也是不會學的。

6. 個人覺得作為一個程序員的業餘學習目標裡面,有一個必要條件就應該是:不能是自產自銷自己玩的玩具,譬如蘋果系列。你得買mac,買iphone,花很大的精力學一個只有蘋果平台上能用的語言和只有蘋果平台上能用的庫。這酸爽……

7. 老闆其實不關心你用什麼語言,他只關心你能不能按時出貨,貨能不能賣好。如果你可以用php做一個很棒的客戶端,並且做出來,你老闆也不會有意見的,更何況swift。

8. manager會關心你用什麼語言,因為項目現成的代碼就是某種語言寫成的。學習成本是需要納入招聘考慮範圍內的東西,然而,如果把學習成本的權重看太高,那麼就反而不是一個合格的manager了。


撇開一些大型對穩定要求特別高的app,對oc動態性極度依賴的app。其他的app用swift是絕對利大於弊的。

沒用只是因為那些負責iOS的技術目光短淺,實力不濟。swift不穩定只是借口。


1、最近分析了 iOS 9 及 watchOS 2 的一些功能,系統 App 及 Framework 都是用 ObjC 實現的,蘋果自己都不用。

2、用 Swift 實現的比較大的 iOS 程序目前應該只有火狐瀏覽器吧,不知道升級到最新版的 Swift 要改多少代碼。

3、前段蘋果工程師通過 Twitter 招聘 Swift 性能優化工程師,說明性能急需提高。

4、目前基礎庫都是 ObjC 的,用靜態語言的 Swift 來寫應用,所獲得的性能提升應該有限。

5、從長遠來看,隨著編譯技術的發展,Swift 類的語言(帶有動態特性的靜態編譯型語言)應該會被廣泛的使用,只是目前 Swift 還不是很成熟。

個人看法,僅供娛樂。


理解Cocoa的精髓還是要學oc。


正在OC轉swift的人還覺得swift語法奇怪爆了 簡直是外星語言 而且並不美觀

OC句子長 但好懂多了。我還覺得方括弧美爆了呢。

都是偏見。


這語言是蘋果找白鼠beta的

angular一樣 google自己都快不用了

大公司有時拋出黃色東西的不全是黃金

有時也有屎


我覺得OC就挺好的,swift跑起來慢的要死,急死人


學一門語言,關鍵是要理解他的設計模式,然後有自己的一套。區區幾個語法,花點時間就能搞懂個大概了。我很不同意去批判某個語言是渣,除非你已經把他吃透了。難道你可以確定,你寫不出優秀的代碼僅僅是這門語言造成的?


1, 生態環境比語言成熟慢:Swift非常適合思考,但是目前還不是工程化ready的語言,主要是上下游生態環境還不成熟,需要時間;

2,路徑依賴效應:人的路徑依賴無解;未來使用swift並獲得巨大市場成功的公司,不是今天這些市場上的巨無霸;就像諾基亞比蘋果更早理解觸屏的價值,但仍然只能眼睜睜看著蘋果後來居上;普朗克曾經說過一句關於科學真理的真理,敘述為「一個新的科學真理取得勝利並不是通過讓它的反對者們信服並看到真理的光明,而是通過這些反對者們最終死去,熟悉它的新一代成長起來。」對於技術來說也是如此。


說起來很輕鬆。

大樓蓋好了,你說要換地基。


你穿棉襖過夏天,你家都穿棉襖過夏天,你們全村都穿棉襖過夏天

沒人見過薄衣服,沒人知道什麼是絲綢,沒人見過蠶。

有一天隔壁村的妹妹穿了件短袖的絲綢衣服來你們村串門,問:你們不穿短袖絲綢的么?


推薦閱讀:

為什麼蘋果的 App Store 不支持程序試用?
怎麼安裝 iOS 7 beta?
iOS中的後台應用刷新到底有什麼用?關了影響明顯嗎?怎麼判斷要不要關或開?
iOS 的多任務有什麼特點?好還是不好?為什麼要這樣?
iOS 7 Beta 1 目前存在哪些問題?

TAG:iOS | 編程語言 | iOS開發 | Objective-C | Swift語言 |