https://www.cnblogs.com/upliver/p/5138160.html
如何在Swift的代碼中使用OC的代碼, 在OC的代碼中使用Swift的代碼?
隨着蘋果公司對Swift的推廣力度不斷加大,市場上很多的項目都在逐步的轉向使用Swift開發,但由於各種原因,公司不可能一時間直接沖OC轉向Swift,因此中間就會有一個過渡期,需要我們程序員進行OC和Swift兩種語言之間進行混合編程.下面我就給大家介紹一下,混編之前我們應該怎么配置.
一、OC的代碼中使用Swift代碼.
-
第一步: 在工程的Build Settings 中把Defines module 改為YES.
-
第二步:確保Product module name 設置為項目工程的名字(在Xcode7中,默認就是工程的名字)
-
第三步:在OC文件中導入 ”項目名-Swift.h” 例如:#import “test-Swift.h” ,另外注意這個.h文件是系統自己創建的,並不需要手動創建,
並不需要導入需要使用的.Swift文件本身,只要確保導入了第三步中的文件,所有的Swift文件就全部可以直接使用。
二、Swift的代碼中使用OC代碼.
- 當你在Swift代碼中引用OC,需要依賴一個橋接文件,作用是將OC的文件暴露給Swift,然而創建這個橋接文件有兩種方式:
-
當你在Swift項目中創建OC文件時,系統提示你創建Objective-C bridging header.h文件點擊YES就OK了,
建類完成之后,項目中會多出一個文件 工程名-Bridging-Header.h 如下圖:
-
自己手動創建橋接文件項目名-Bridging-Header.h
注意:自己創建這個橋接.h文件的時候,一定要嚴格按照“項目名-Bridging- Header.h”的格式創建文件。
-
swift使用OC第三方庫配置流程以及使用方法
https://blog.csdn.net/xiaoxiaocode/article/details/80114481
2018年04月27日 22:49:29 xiaoxiaocode 閱讀數:553
在swift開發過程中我們難免會使用一些OC的開源庫來附注項目開發。這就涉及到OC和swift的混編了,正好本人最近也在模仿斗魚直播的項目,自己也使用了OC的第三方庫,今天就給大家介紹一下自己的使用過程。
一、導入第三方庫
這里需要注意點,我使用pod導入OC的第三方庫SDCycleScrollView,然后進行配置出現找不到SDCycleScrollView的錯誤,最后還是直接復制SDCycleScrollView到項目中才解決的問題,這一點還不知道為什么,希望清楚的這個問題的同學指正。
二、創建頭文件
創建一個頭文件,然后將SDCycleScrollView.h文件導入到頭文件中。
三、配置橋接頭文件
在Build Setting里面搜索bridging,然后向Objective-C Bridging Header中添加我們創建的頭文件的地址,如下圖:
四、使用OC方法
還是使用swift的方法調用就可以。
let imageNames = ["1.png", "2.png", "3.png", "4.png","5.png"]
let cycleScrollView = SDCycleScrollView.init(frame: CGRect (x: 0, y: 0, width: self.view.frame.size.width, height: 200), shouldInfiniteLoop: true, imageNamesGroup: imageNames)
cycleScrollView?.delegate = self
self.view.addSubview(cycleScrollView!)
五、OC代理方法的使用
第三方的方法會自動轉成swift的方法,所以只要還是使用swift的方法調用就可以啦!
/*
1、按照swift的代理執行方式來就可以。
*/
extension RecommendVC : SDCycleScrollViewDelegate{
//圖片滾動回調
func cycleScrollView(_ cycleScrollView: SDCycleScrollView!, didScrollTo index: Int) {
print("圖片滾動回調\(index)")
}
//點擊圖片回調
func cycleScrollView(_ cycleScrollView: SDCycleScrollView!, didSelectItemAt index: Int) {
print("點擊圖片回調\(index)")
}
}
iOS中Objective-C和Swift混編及第三方框架相互調用
https://www.jianshu.com/p/a663f51ed61a
本文將詳細介紹一下OC和swift混編問題,其中涉及兩大部分:1)oc項目中混編swift的實現; 2)oc或者swift第三庫的導入及使用.
1 oc項目中混編swift
在oc項目中想要使用swift,並且實現相互調用,需要一些基本的設置,橋接文件也是必須得.
1. 1 基本設置支持swift
在bulid setting中找到 Packaging 下的 define module,將是否定義模塊布爾值改成YES,這樣OC就可以支持swift了.
define module.png
1. 2 創建橋接文件
橋接文件可以在你創建swift文件的時候Xcode自動生成,也可以自己手動創建,手動創建也就是一個頭文件(.h文件).
這里需要說明一點的是,在oc項目中創建的swift文件必須都要繼承自NSObject基類,而你自己想要創建的一些類可以這樣來創建:
創建步驟1
1.png
創建步驟2
2.png
創建步驟3
這里選擇Create Bridging Header,如果不選的話,那就自己手動創建,然后指定索引位置
3.png
創建步驟4
4.png
第三步中如果沒有創建橋接文件的話,手動創建一個橋接文件,然后build setting 中搜索 Objective-C Bridging Header,將你手動創建的橋接文件路徑輸入進去
橋接文件設置
橋接文件設置
1.3 swift中調用oc文件
現在基本上可以實現swift調用oc中代碼了,首先在橋接文件中導入你想在swift中用到的oc類
導入oc類
導入oc類
使用oc中的類
1. 4 oc中調用swift文件
oc中調用swift文件
2 oc和swift第三方庫的使用
如果你的項目用cocoapods來管理你使用的第三方庫,並且OC項目中已經集成了多個第三方庫,那么這時你想在導入swift編寫的第三方庫,這時你不能用cocoapods管理第三方庫了,因為Swift連接時不支持靜態庫,cocoapods也在其Podfile中有說明:
Uncomment the next line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
翻譯過來就是:如果你想使用swift或者動態庫,就把下面一行注釋打開
然而打開后你是編譯不過去的,這時需要手動導入swift庫
使用swift或者動態庫使用use_frameworks
下面手動導入Alamofire作為例子:
1)首先下載Alamofire項目源碼,解壓
Alamofire項目源碼
可以刪除多余的不需要的文件,比如Example文件夾,等等
2)將Alamofire項目整個拖到你的項目中
拖到自己項目中
3)在Embedded Binaries中添加Alamofire.framework
Embedded Binaries中添加Alamofire.framework
這樣就可以cocoapods管理OC第三方庫,swift第三方庫手動管理,實現不同第三方框架的調用.
作者:偶爾登南山
鏈接:https://www.jianshu.com/p/a663f51ed61a
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。