OC與Swift混編之橋接文件

亮點一:對于Xcode提示建立橋接文件時显沈,誤點cancel后的處理方法

亮點二:SDK開發(fā)的時候者蠕,OC與Swift混編橋接文件的建立技巧

普通工程下,Swift與OC混編時橋接文件的建立方法

一酵幕、Swift項目混編OC

建立Swift-OC橋接文件(在Swift類中引用OC類及方法)

1.如圖促绵,新建project,language選擇Swift槽奕。

2.在Swift工程主目錄下新建一個OC類几睛,如果是項目第一次創(chuàng)建OC類的話,會彈出如圖的提示窗粤攒。這個提示窗就是是否建立Swift-OC的橋接文件的彈窗提示

3.點擊Create Bridging Header所森,Xcode會自動創(chuàng)建一個頭文件。這個頭文件夯接,就是Swift-OC的橋接文件焕济,如下圖所示:

4.在Swift-OC橋接文件里將OC類進(jìn)行聲明(聲明的時候不會任何系統(tǒng)提示,需要全手寫)如圖:

此時在Swift與OC根據(jù)Swift-OC橋接文件盔几,就建立了交接關(guān)系晴弃,在Swift類中就可以調(diào)用OC類里的方法了。

5.在OC類隨便實現(xiàn)一個自定義實例方法逊拍。在Swift類中調(diào)用OC的這個方法上鞠。如圖:

overridefuncviewDidLoad(){

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

let ocView = XLLOCView.init()

let count = ocView.getConstCount()

print(count)

}

亮點一:在彈出建立橋接文件提示的時候,誤點了cancel怎么破

新建一個header文件芯丧,如果點擊next設(shè)置header文件名為SwiftOC-Header

在項目target下的build setting -> Swift Compiler-General ->Objective-C Bridging Header將上面建立文件的目錄設(shè)置上去芍阎。我的Demo頭文件目錄為XLLSwiftOCMaxTest/SwiftOC-Header.h。如圖

此時再在Swift類中調(diào)用OC方法注整,發(fā)現(xiàn)一樣好使能曾。

其實系統(tǒng)提示情況下建立的Swift-OC橋接文件,在build setting->Objective-C Bridging Heade中肿轨,Xcode默認(rèn)將路徑已經(jīng)設(shè)置了寿冕。所以根據(jù)提示建立的橋接文件,這個地方就不需要再進(jìn)行手動設(shè)置

OC-Swift橋接文件(OC類引用Swift類及方法)

在Swift的項目里椒袍,并不會有提示讓你去建立OC-Swift橋接文件驼唱。那么我們怎樣在OC類中去調(diào)用Swift呢?請看圖六驹暑,在Objective-C Bridging Header下面的一行Objective-C Generated Interface Header Name,這個就是OC-Swift橋接文件聲明的地方玫恳。可以看到其命名為XLLSwiftOCMaxTest-Swift.h

1.在Swift類實現(xiàn)一個實例方法

import UIKit

class XLLSwiftView:UIView {

@objc func getSwiftConstCount()->NSString?{

return"5"

}

}

2.在OC類中聲明OC-Swift橋接文件优俘,并調(diào)用Swift類的實例方法京办。

#import"XLLOCView.h"

#import"XLLSwiftOCMaxTest-Swift.h"

@implementationXLLOCView

-(instancetype)init{

if(self=[superinit]){

XLLSwiftView*swiftView=[[XLLSwiftView alloc]init];

NSString*count=[swiftView getSwiftConstCount];

NSLog(@"%@",count);}returnself;

}

二、OC項目混編Swift

其實與Swift混編OC原理一樣帆焕,第一次新建Swift類的時候惭婿,會彈出建立OC-Swift橋接文件的提示,點擊create即可。如果沒有誤點了取消财饥。去設(shè)置項目target下的build setting -> Swift Compiler-General -> Objective-C Generated Interface Header Name换吧。雙擊鍵入$(SWIFT_MODULE_NAME)-Swift.h,然后在OC調(diào)用Swift方法的類中聲明#import "項目名稱-Swift.h"即可钥星。

對于Swift-OC的橋接文件沾瓦,需要手動建立。方法與Swift項目中手動創(chuàng)建Swift-OC橋接文件一樣谦炒。

三贯莺、SDK項目下的混編

目前遇到的是在framework工程下,OC與Swift混編编饺,OC類調(diào)用Swift方法的情況乖篷。

在framework工程下,混編不會提示任何創(chuàng)建橋接文件的提示透且。如果OC類需要調(diào)用Swift類的方法撕蔼,需要在OC類這樣聲明橋接文件:#import "工程名/工程名-Swift.h"

而設(shè)置Swift-OC橋接文件路徑Objective-C Bridging Header秽誊,編譯之后會報如下錯誤:

如上錯誤鲸沮,顯然說framework是不支持設(shè)置此類橋接文件的(這就尷尬了)。因為項目需要沒有涉及到此操作锅论,所以這個問題也沒細(xì)細(xì)研究讼溺,有時間的小伙伴可以鉆研一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末最易,一起剝皮案震驚了整個濱河市怒坯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藻懒,老刑警劉巖剔猿,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嬉荆,居然都是意外死亡归敬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門鄙早,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汪茧,“玉大人,你說我怎么就攤上這事限番〔瘴郏” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵弥虐,是天一觀的道長扩灯。 經(jīng)常有香客問我别威,道長,這世上最難降的妖魔是什么驴剔? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮粥庄,結(jié)果婚禮上丧失,老公的妹妹穿的比我還像新娘。我一直安慰自己惜互,他們只是感情好布讹,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著训堆,像睡著了一般描验。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坑鱼,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天膘流,我揣著相機(jī)與錄音,去河邊找鬼鲁沥。 笑死呼股,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的画恰。 我是一名探鬼主播彭谁,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼允扇!你這毒婦竟也來了缠局?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤考润,失蹤者是張志新(化名)和其女友劉穎狭园,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體额划,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡妙啃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了俊戳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揖赴。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抑胎,靈堂內(nèi)的尸體忽然破棺而出燥滑,到底是詐尸還是另有隱情,我是刑警寧澤阿逃,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布铭拧,位于F島的核電站赃蛛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搀菩。R本人自食惡果不足惜呕臂,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肪跋。 院中可真熱鬧歧蒋,春花似錦、人聲如沸州既。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吴叶。三九已至阐虚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚌卤,已是汗流浹背实束。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留逊彭,地道東北人磕洪。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像诫龙,于是被迫代替她去往敵國和親析显。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言 點擊簡書寫文章的時候發(fā)現(xiàn)還有幾篇文章只寫了標(biāo)題签赃,內(nèi)容還沒有寫谷异。所以現(xiàn)在趁著午休時間,把這篇文章完善一下锦聊〈踵冢看到...
    CoderXLL閱讀 31,766評論 12 31
  • iOS開發(fā)中有時候不可避免的會使用到OC和Swift的混編,這時候就需要建立橋接文件連接不同語言的類庫 最近項目中...
    丶Destinyxl閱讀 15,665評論 16 27
  • 概述 利用runtime特性實現(xiàn)iOS項目的組件化開發(fā)孔庭,是由@casatwy大神提出來的尺上,在他的博客中具體介紹...
    Mr杰杰閱讀 1,594評論 2 9
  • 混編分為兩種情況: 1.在Swift工程中使用Objective-C文件 2.在Objective-C工程...
    紫金飛俠雷閱讀 2,027評論 0 0
  • 前言: Swift語言出來后,可能新的項目直接使用Swift來開發(fā)圆到,但可能在過程中會遇到一些情況怎抛,某些已用OC寫好...
    瘋狂的電腦閱讀 2,255評論 0 9