如何在Swift的代碼中使用OC的代碼, 在OC的代碼中使用Swift的代碼?


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,然而創建這個橋接文件有兩種方式:
    1. 當你在Swift項目中創建OC文件時,系統提示你創建Objective-C bridging header.h文件點擊YES就OK了,

      建類完成之后,項目中會多出一個文件 工程名-Bridging-Header.h 如下圖:

    2. 自己手動創建橋接文件項目名-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

來源:簡書

簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM