我應該直接學Swift還是Objective-C?

2021-02-16 TDLabs

  當我們發布了Swift語言學習課程之後,收到了很多郵件和私信來問自己是否還需要學習C或者Objective-C。此外,人們似乎還在迷惑Swift到底適合iOS開發生態中的哪些部分。通過這篇文章,我希望能掃清你的疑惑並且將你送到正確的學習軌道上。

  我應該先學C/Objective-C還是直接學Swift?

  Swift是一個全新的語言,與Objective-C或C都沒有任何關係。我的意思是它們都是程式語言並且遵守一些基礎概念和範例,但是你並不需要在學習其中一個之前先學另一個。即使你是編程新手,你也可以學習蘋果發布的官方的Swift文檔(中文版)而無需先學Objective-C。

  我正在學習Objective-C,我應該轉為學Swift嗎?

  這要試情況而定。如果你把學習iOS當做一個愛好或者出於好奇心才學,那麼轉到Swift學習上吧。如果你將從事iOS開發視為職業,那麼你要知道外面至少有100萬個應用都是用Objective-C編寫的,Swift於2014年才剛剛發布,所以你將來的職業的app開發仍然很有可能使用Objective-C。所以你需要學習Objective-C來獲得一個工作,直到Swift成為標準,這大概將花費數年時間。同時學習兩門語言也將對你有好處。你未來的上司甚至可能會讓你來將現存的Objective-C app切換到Swift上。不過我對這個觀點有所保留,因為一個應用最重要的部分是它的功能而非它使用的語言,因此重寫現有app的做法可能不會流行。

  我建議初學者選擇Swift是因為它是一種友好的語言,並且感謝playground讓它變得容易學會。一旦你學過了Swift,如果將iOS開發視為職業的話,對於學習Objective-C也將更容易理解。

  最後,Swift是一種現代語言,如果你學習Swift,意味著也同時做好了面向未來的準備,因為Swift將是新一代的應用所用的語言(包括Apple Watch上的應用)。Swift語言是蘋果送給每個人的禮物。世界上還沒有5年經驗的Swift開發者,但如果你現在開始學習Swift,那麼過了5年你就將成為其中一位了。

  我最後的建議是,不管你選擇哪一門語言,學習它並且精通它。最後你將發現,只要你學會iOS SDK,使用哪種語言並不是最重要的。並且學了一種語言之後可以很容易的開始學習另一門,最緊要的是,從現在就開始學習。

來自:蘋果開發中文站

優秀文章推薦:

回復「電子書」 查看並下載《經典的計算機書籍》;

回復「苦逼IT」 查看《這是苦逼IT才能看懂的笑話》;

回復「追妹子」 查看《追妹子的各種算法》;

回復「萌妹子」 查看《TDLabs萌妹子小編視頻》;

點擊查看原文↙↙↙直接關注我們

相關焦點

  • 來一次有側重點的區分Swift與Objective-C
    與Swift的區別,其實區別還是很多的,重點整理一下個人覺得很重要的:面向協議編程。一、Objective-C與Swift的異同1.1、swift和OC的共同點:1.2、swift的優點:- swift注重安全,OC注重靈活- swift注重面向協議編程、函數式編程
  • Swift學習: 從Objective-C到Swift
    結論放在開頭:我認為Swift比Objective-C更優雅,更安全同時也更現代,更性感。文章組織脈絡:從Objective-C到Swift的語法差異。我們熟悉的Objective-C特性在Swift中如何展現。從Objective-C到Swift的進步改進。研究對比Swift在安全性,易用性上的提升,給我們帶來的新編程範式。
  • Swift和Objective-C混編
    class修飾的屬性(譯者註:Objective-C在Xcode9引入了一個新的屬性class,應該就是為了對接Swift吧),轉為在Swift中類型屬性。Objective-C中的原子性修飾符(atomic和nonatomic)在Swift中沒有對應的修飾符,但是原子性所提供的功能在Swift裡是依然存在的。
  • Swift與Objective-C的兼容「黑魔法」:@objc和Dynamic
    這個其實和使用Objective-C的原來的Framework是一樣的,對於一個項目來說,外界框架是由Swift寫的還是Objective-C寫的,兩者並沒有太大區別。class 我的類 { func 打招呼(名字: String) { println("哈嘍,\(名字)") }}我的類().打招呼("小明")Objective-C的話是無法使用中文來進行調用的,因此我們必須使用@objc將其轉為ASCII才能在Objective-C裡訪問:
  • Objective-C 和 Swift 面試題
    原因是,所有UI的相關操作應該在主線程進行。當我們可以在一個後臺線程中等待4秒,但是一定要在主線程中更新alertLabel。Swift 是面向對象還是函數式的程式語言?Swift 既是面向對象的,又是函數式的程式語言。說 Swift 是面向對象的語言,是因為 Swift 支持類的封裝、繼承、和多態,從這點上來看與 Java 這類純面向對象的語言幾乎毫無差別。
  • Objective-C 裡的 eval
    DEFCON CTF 27 決賽有一個 TelOoOgram,是運行在 iOS 虛擬機 Corellium 上的,應該是史上第一次在 attack & defense 環節出現 iOS。而這一次我們直接在一臺 Xr 物理機上運維,搭載了當時最新的 iOS 12.4.1 系統,來真的!
  • Swift 開源了,Objective-C還能走多遠?
    其實Swift 語言開源,既在意料之外,又在情理之中。其次來講,語言的選擇是一個開發者用腳投票的過程,我想下面的這個趨勢圖,應該說明了這點。所以我的建議是,如果想了解Swift ,請儘早,新事物的窗口期就是那麼長時間。
  • 「主觀的」是「objective」還是「subjective」?看了你就會了!
    He gave me some objective advice.他給了我一些客觀的建議。I find it difficult to be objective where he's concerned.只要涉及他,我就難以做到保持客觀。
  • 通過LLVM 在 Android 上運行 Swift 代碼
    ;構建對象文件:$ $SDK/usr/bin/swiftc -emit-object hello.swifthello.o 裡面到底有什麼:$ nm hello_swift.o                 U __TFSSCfMSSFT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1
  • Objective-C的元組實現(JDTuple)
    那勢必能夠提高不少開發的效率,讓OC這門古老的語言也swift一下。元組(tuple)是一種數據結構,它本來是一種關係型資料庫的概念,用來描述一張表中的一條數據。例如:那麼一行數據就是一個元組,即: tuple1 = (阿強,18,戰士);tuple2 = (阿珍,28,法師)。這個概念後來也被使用在代碼中,成為一種數據封裝的工具。
  • Objective-C 與 Runtime:為什麼是這樣?
    來自:springox的博客連結:http://springox.w18.net/2015/09/03/objectivecruntime
  • 10個Objective-C基礎面試題,iOS面試必備
    @class一般用於頭文件中需要聲明該類的某個實例變量的時候用到,在m文件中還是需要使用#import而#import比起#include的好處就是不會引起重複包含2、談談Object-C的內存管理方式及過程?
  • 語法淺析--從C語言到Objective-C
    從早起的二進位0和1,到彙編語言的彙編指令,到C語言的ASCII碼字符集,再到swift的Unicode字符集。當然了,單純的符號是無意義的,更為狹義的語素會經過語言語法的劃分,如關鍵字、標識符、運算符、注釋符等等。就定義而言,語素規範是由語法規定的,而就功能而言,語素明確了我們「用什麼寫」。
  • 深入理解Objective-C的Runtime機制
    下面通過分析Apple開源的Runtime代碼(我使用的版本是objc4-646.tar)來深入理解Objective-C的Runtime機制。SELSEL是函數objc_msgSend第二個參數的數據類型,表示方法選擇器,按下面路徑打開objc.h文件:
  • 再現QG中野聯動,swift選卡莎打野,doinb:關我屁事!
    那就是曾經和Doinb組成QG中野的swift,由於種種原因,兩人決裂最後不歡而散。 QG這個LPL亞軍隊伍名字也從聯盟消失不見。 開了一把排位進去選人,彈幕突然刷屏二樓是swift。 等到二樓選了卡莎,Doinb看到彈幕愣了一下,說二樓是swift嗎?
  • 盤點開發者最喜愛的Swift技巧
    在本文中,來自objc.io、LinkedIn等各個公司的軟體工程師及資深開發者總結了自己在接觸Swift過程中最喜愛的貼士與技巧,有些技巧即使是很早就入坑Swift的開發者都不知道,不妨一起來了解一下吧。