https://www.cnblogs.com/QianChia/p/5777341.html#_label2html
本文目錄swift
回到頂部框架
回到頂部函數
1> 在 Swift 項目中建立 OC/C 的 .h 和 .m / .c 文件,文件中的格式爲其本有的格式。ui
2> Xcode 提示是否建立 Objective-C bridging 頭文件,點擊 Yes 建立,Xcode 會自動建立一個橋接頭文件,文件名的格式是 "項目名-Bridging-Header.h"。spa
通常狀況下,Xcode 輔助生成的橋接頭文件在編譯屬性裏已經幫咱們設置了引用,若是沒有的話須要本身將其配置到項目中,選中項目中的 Targets => Build Setting => Swift Compiler - general => Objective-C Bridging Header 屬性,雙擊配置成 「項目名/項目名-Bridging-Header.h」 便可。.net
3> 在此橋接頭文件中添加所建立的 OC/C 文件的頭文件( #import "*****.h" )。調試
4> 在 main.swift 文件中無需添加頭文件,直接使用建立的 OC/C 文件中的類、方法或函數便可。code
1> 在 .Swift 文件中每個方法和類名前都加 @objc 前綴來修飾,以便在 Objective-C 中能夠訪問。新版 Swift 代碼中已不須要再添加。htm
2> 在 Swift 項目中建立 OC 的 .h 和 .m 文件,文件中的格式爲其本有的格式。
3> Xcode 提示是否建立 Objective-C bridging 頭文件,點擊 Yes 建立,Xcode 會自動建立一個橋接頭文件,文件名的格式是 "項目名-Bridging-Header.h"。
通常狀況下,Xcode 輔助生成的橋接頭文件在編譯屬性裏已經幫咱們設置了引用,若是沒有的話須要本身將其配置到項目中,選中項目中的 Targets => Build Setting => Swift Compiler - general => Objective-C Bridging Header 屬性,雙擊配置成 「項目名/項目名-Bridging-Header.h」 便可。
4> 在此橋接頭文件中添加所建立的 OC 文件的頭文件( #import "*****.h" )。
5> 在 OC 的 .m 文件中添加頭文件 「#import "項目名-Swift.h"」,在此文件中直接使用 .Swift 文件中的類、方法便可。
"項目名-Swift.h" 這個頭文件是 Xcode 自動產生的,若是不是引用外部 Swift 語言編寫的框架,不須要咱們作過多配置,可是若是是引用外部框架,須要咱們進行配置:選中項目中的 Targets => Build Setting => Packaging => Defines Module 修改爲 Yes,而後在 Build Setting => Packaging => Product Module Name,設置一個名稱,例如 SwiftInAction。特別注意的是,這個名稱不能有 「-」 等字符。這樣咱們在 OC 的 .m 文件中就能夠添加 "SwiftInAction-Swift.h" 了,這個名字是 Xcode 根據設置的模塊名自動生成的。
6> 在 main.swift 文件中無需添加頭文件,直接使用建立的 OC 文件中的類、方法。
一、在 OC 項目中建立 .Swift 文件,文件中的格式爲其本有的格式。
二、Xcode 提示是否建立 Objective-C bridging 頭文件,點擊 Yes 建立,Xcode 會自動建立一個橋接頭文件,文件名的格式是 "項目名-Bridging-Header.h"。
通常狀況下,Xcode 輔助生成的橋接頭文件在編譯屬性裏已經幫咱們設置了引用,若是沒有的話須要本身將其配置到項目中,選中項目中的 Targets => Build Setting => Swift Compiler - general => Objective-C Bridging Header 屬性,雙擊配置成 「項目名/項目名-Bridging-Header.h」 便可。
三、在 OC 的 .m 文件中添加頭文件 「#import "項目名-Swift.h"」,在此文件中直接使用 .Swift 文件中的類、方法便可。
"項目名-Swift.h" 這個頭文件是 Xcode 自動產生的,若是不是引用外部 Swift 語言編寫的框架,不須要咱們作過多配置,可是若是是引用外部框架,須要咱們進行配置:選中項目中的 Targets => Build Setting => Packaging => Defines Module 修改爲 Yes,而後在 Build Setting => Packaging => Product Module Name,設置一個名稱,例如 SwiftInAction。特別注意的是,這個名稱不能有 「-」 等字符。這樣咱們在 OC 的 .m 文件中就能夠添加 "SwiftInAction-Swift.h" 了,這個名字是 Xcode 根據設置的模塊名自動生成的。
在開始的幾回編譯或者代碼調試中,可能會出錯,提示找不到這個自動生成的文件,通常對項目進行 clean 操做能夠解決問題,具體是點擊 Product 菜單下的 clean 菜單項便可。
一、一些 Swift 特有的類型,例如元組、泛型、類型別名、嵌套類型等,不能在 Objective-C 裏使用。
二、不能在 Objective-C 裏繼承 Swift 類型。
三、數據類型之間須要互相映射關聯。能夠 Objective-C 核心類型到 Swift 中的替代類型,例如 NSString 到 String。Objective-C 肯定類型到 Swift 中的同等類型,例如 id 到 AnyObject。Objective-C 概念到 Swift 中相匹配的概念,如 pointers 到 optionals。
四、不能直接把 C++ 代碼導入 Swift,解決辦法是爲 C++ 代碼建立一個 Objective-C 或者 C 的封裝。