1> Swift與Objective-C共用同一套運行時環(huán)境
我們編寫程序,讓程序運行起來,被機器執(zhí)行的代碼并非全部是由我們自己來編寫的。需要同時運行很多預先寫好的支持性的代碼,才能讓我們自己的代碼運行起來。程序并非單獨存在的,運行時處在一定的環(huán)境當中。我總聯(lián)想到很多小螞蟻在泥土上面爬,而我自己寫的程序只是其中的一只。
Swift跟Objective-C編譯出的程序代碼運行在同一套運行環(huán)境上面。Swift的類型可以橋接到Objective-C的類型,反之亦然。Swift編寫的代碼可以調用Objective-C編寫的代碼,反之也一樣。
Objective-C之前積累下來的大量類庫,實現(xiàn)不用改寫Swift就可以直接調用。
2> 同一個工程,可以同時使用Swift和Objective-C
Objective-C在一端,Swift在另一端,兩端經中間文件進行橋接。橋接文件包含Objective-C的頭文件,編譯時自動轉成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é)議、接口、初始化、擴展類、命名參數(shù)、匿名函數(shù)等,在Swift中繼續(xù)有效(可能只是換了個術語)。我自己將Swift看成是Objective-C的一塊大大的語法糖,其他人可能有不同感受。
Swift大多數(shù)概念與Objective-C一樣,也有些概念在Objective-C找不到對應,比如泛型。Swift中將那種操作寫一次就可以作用多個類型的語法叫做Generics(泛型)。