OC調用Swift
1.新建OC項目工程
2.在項目中新建swft Controller文件
點擊 "Create Bridging Header" 發現在項目中生成了個 OCObject-Bridging-Header.h文件, 該文件主要作用是在swift中引用oc用.
3.OC中使用swift代碼, swift代碼是以module形式管理的, 在這里我們需要swift以module暴露給我們, 修改如下配置:
其中 Product Name 默認為項目的名字, 也可以自己設置, 這個需要記住在后面需要用到.
4.在oc文件中導入swift模塊.
'#'import "OCObject-swift.h"
OCObject 為第三步中設置的模塊名稱, 這個導入xcode可能不會給出提示,需要我們手動輸入.
5.在oc文件中使用swift類
swift訪問oc
1.把需要在swift中用到的oc類導入OCObject-Bridging-Header.h文件.
這個導入xcode可能也不會給出提示,需要我們手動導入.
2.在swift中調用oc類.
預處理指令
Swift編譯器不包含預處理器。取而代之的是,它充分利用了編譯時屬性,生成配置和語言特性來完成相同的功能。因此,Swift沒有引進預處理指令。
簡單宏
在C和Objective-C,您通常使用的#define指令定義的一個基本常數,在Swift,您可以使用全局常量來代替。例如:一個全局定義#define FADE_ANIMATION_DURATION 0.35,在Swift可以使用let FADE_ANIMATION_DURATION = 0.35來更好的表述。由于簡單的用于定義常量的宏會被直接被映射成Swift全局量,Swift編譯器會自動引進在C或Objective-C源文件中定義的簡單宏。
復雜宏
在C和Objective-C中使用的復雜宏在Swift中并沒有副本。復雜宏是那些不用來定義常量的宏,包含帶括號的函數式宏。您在C和Objective-C使用復雜的宏以避免類型檢查的限制,或避免重新鍵入大量的樣板代碼。然而,宏也會產生Bug和重構的困難。在Swift中你可以使用函數和泛型來達到同樣的效果,無需任何的妥協。因此,在C和Objective-C源文件中定義的復雜宏在Swift是不能使用的。
編譯配置
Swift代碼和C、Objective-C代碼被有條件地,以不同方式編輯。SWIFT代碼可以根據生成配置的評價可以有條件地編譯。生成配置包括true和false字面值、命令行標志以及下表中的平臺測試函數。您可以使用-D <#Flag#>指定命令行標志。