OC與Swift混編

OC調用Swift

1.新建OC項目工程

圖片.png

2.在項目中新建swft Controller文件

圖片.png
圖片.png

點擊 "Create Bridging Header" 發現在項目中生成了個 OCObject-Bridging-Header.h文件, 該文件主要作用是在swift中引用oc用.

3.OC中使用swift代碼, swift代碼是以module形式管理的, 在這里我們需要swift以module暴露給我們, 修改如下配置:

圖片.png

其中 Product Name 默認為項目的名字, 也可以自己設置, 這個需要記住在后面需要用到.

4.在oc文件中導入swift模塊.
'#'import "OCObject-swift.h"
OCObject 為第三步中設置的模塊名稱, 這個導入xcode可能不會給出提示,需要我們手動輸入.

5.在oc文件中使用swift類

圖片.png

swift訪問oc

1.把需要在swift中用到的oc類導入OCObject-Bridging-Header.h文件.
這個導入xcode可能也不會給出提示,需要我們手動導入.

圖片.png

2.在swift中調用oc類.

圖片.png

預處理指令

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#>指定命令行標志。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • OC中使用Swift 1、在項目中右鍵添加一個 Swift 文件,如TestSwift.swift。 2、添加后 ...
    刺客辣條閱讀 2,276評論 3 11
  • swift強勢來襲,想要緊跟腳步,但之前OC的工程推倒重來在時間和實踐上都有點傷神,混編就是這個過渡的橋梁,使...
    _skye閱讀 5,276評論 8 22
  • 寫在前面: Swift 代碼訪問 Objective-C 代碼,或者反之。導入外部框架時,請先確保 TARGET...
    三分慢先森閱讀 1,095評論 0 3
  • OC與swift混編 前言 蘋果推出swift已經兩年多了,到今年的九月份正式發布了swift的3.0版本,相信很...
    wentianen閱讀 753評論 0 5
  • 1.定義 memcpy指的是c和c++使用的內存拷貝函數,memcpy函數的功能是從源src所指的內存地址的起始位...
    Style_熙閱讀 517評論 0 0