今天,工作的時候,遇到OC調用swift中代碼的問題,特意上網查了查,現在自己總結如下:
以新建一個項目為例: OCAndSwift
1. 項目創建的時候,選擇的時候Objective-C語言
2. 創建了一個SwiftUser.swift文件,內容如下:(可忽略)
3. 這時,我們在 ViewController.m中調用剛剛創建出來的 SwiftUser.swift文件,這是會看到如下提示:
4. 問題出現了,那我們要怎么才能調用swift格式的文件呢???
解決如下: 引入文件 OCAndSwift-swift.h,即可
5. 有沒有小伙伴會有疑問說,這個是什么文件啊? 為什么是這個文件啊?
哈哈,通過查閱資料了解到,這個就是所謂的橋接文件,關於文件名的命名,是這樣的,
targets->build settings ->packaging->Product Module Name
通過,這些配置,就可以查詢到橋接文件名稱
7. OCAndSwift-swift.h,默認后綴 -swift.h。文件中的內容為自動生成,無需程序員手動修改,通過 command + 鼠標左鍵,即可查詢到里邊的內容
另外,今天遇到一個問題,當我在 SwiftUser.swift 文件中,創建 Int 類型變量時,OCAndSwift-swift.h 並不會幫我自動生成對應的屬性字段。
經過測試,發現 枚舉 類型也無法轉換
解決辦法:我們可以通過方法傳參的方式,如下:定義的 SettingAge(age:Int) 方法,這樣就可以傳遞Int類型
==============================我是分割線=============================================
Swift 中調用 OC 代碼,這個比較簡單,
1. 創建橋接文件
OCAndSwift-Bridging-Header.h, 導入所需要的 #import "xxx.h" 文件
2. 配置文件
targets->build settings ->packaging->Object-C Bridging Header
3.之后就可以隨心所欲的調用了,在每次新創建出來 oc.h 文件時,都需要手動向橋接文件中添加 #import "xxx.h",略顯麻煩。