1-> Swift 與 Objective_C 共用一套運行時環(huán)境
? ? ? 我們編寫程序,讓程序運行起來,被程序執(zhí)行的代碼并非全部是由我們自己來編寫的. 需要同時運行很多預(yù)先寫好的支持性代碼,才能讓我們自己的代碼運行起來. 程序并非單獨存在的,運行時處在一定的環(huán)境當(dāng)中. 我總聯(lián)想到很多的小螞蟻在泥土上爬,而我寫的程序只是其中的一只.
? ? ? Swift 和 Objective_C 編譯出的程序代碼運行在同一套運行環(huán)境上面. Swift 的類型可以橋接到 Objective_C 的類型,反之亦然. Swift 編寫的代碼可以調(diào)用 Objective_C 編寫的代碼,反之亦然.
? ? ? Objective_C 之前積累下來的大量庫, 實現(xiàn)不用改寫 Swift 就能直接調(diào)用.
2-> 同一個工程,可以同時使用 Swift 和 Objective_C?
? ? ? Objective_C 在一端, Swift 在另一端,兩端經(jīng)中間文件進(jìn)行橋接. 橋接文件包含 Objective_C 的頭文件,編譯時自動轉(zhuǎn)成 Swift 可以識別的形式. Swift 就可以使用 Objective_C 的類和它的函數(shù).
? ? ? 在 Swift 的類中,加上 @objc(類名)的字樣, Objective_C 也可以使用 Swift 編寫的類.但 Swift 跟 C++ 的相互吊桶,需要 Objective_C 來封裝.?
3-> Swift 骨子里大多與 Objective_C 一樣
? ? ? Objective_C 出現(xiàn)過的絕大數(shù)概念,比如引用計數(shù) ARC 屬性 協(xié)議 接口 初始化 擴(kuò)展類 命名參數(shù) 匿名函數(shù)等,在 Swift 中繼續(xù)有效(可能只是換了個術(shù)語).我自己把 Swift 看成是 Objective_C 的一塊大的語法糖,其他人可能有不同的感受.
? ? ? Swift 大多數(shù)概念與 Objective_C 一樣, 也有些概念在 Objective_C 找不到對應(yīng),比如泛型. Swift 中將那些操作寫一次就可以作用多個類型的語法叫做泛型.