swift 和 oc 混編 以及遇到的坑

一. 在swift中調(diào)用oc.

  1. 創(chuàng)建名為項(xiàng)目名+Bridging-Header.h的文件,注意名稱一定要一模一樣。

  2. Build Settings->Objective-C Bridging Header中指定路徑。若是自動創(chuàng)建的,系統(tǒng)已經(jīng)給你生成好了,否則就要自己添加目錄了。

  3. 在橋接文件中導(dǎo)入要使用的.h文件,如圖:
    image.png
  4. 注意若提示無法找到文件,則檢查是否已經(jīng)關(guān)聯(lián)到swift項(xiàng)目的target上:
  5. 在swift中調(diào)用oc中的Category類方法編譯不通過的問題:就是在NSString+Helper.h中定義了一個(gè)類方法,但轉(zhuǎn)換的時(shí)候Swift自動轉(zhuǎn)換成了init方法,with前面的省略,with后面的作為參數(shù):


    如上圖,編譯器在轉(zhuǎn)換時(shí)自動將方法轉(zhuǎn)換成了:

  convenience init(text: String?)

所以調(diào)用的時(shí)候,如果顯示不出方法來,可以這么調(diào)用:

  let str = NSString.init(text: "")

二. 在oc中調(diào)用swift.

  1. 在swift的代碼要能被oc調(diào)用,其定義的類要繼承自NSObject,函數(shù)要用@objc定義?;蛘咴陬惖拈_頭用@objcMembers修飾,這樣類的所有屬性和方法都能被oc訪問。如下圖:
  1. xcode已經(jīng)默認(rèn)生成一個(gè)用于OC調(diào)用Swift的頭文件,文件名格式是:Target名稱-Swift.h。
  1. 在oc的代碼中導(dǎo)入這個(gè)文件,在相應(yīng)的方法中調(diào)用swift的代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言:最近一段時(shí)間比較忙,公司項(xiàng)目比較多,直到現(xiàn)在年后過來以 后總結(jié)一下之前項(xiàng)目中遇到的問題,以及自己使...
    LHHLHH閱讀 1,482評論 2 8
  • 在OC項(xiàng)目中,有可能會遇到需要引入Swift寫的第三方庫。在Swift項(xiàng)目中,也有可能會遇到需要引入OC寫的第三方...
    HF_K閱讀 1,842評論 0 4
  • 概述 利用runtime特性實(shí)現(xiàn)iOS項(xiàng)目的組件化開發(fā),是由@casatwy大神提出來的,在他的博客中具體介紹...
    Mr杰杰閱讀 1,711評論 2 9
  • Swift與OC混編 Swift工程中調(diào)用OC代碼 不需要在Swift中import OC的類,統(tǒng)一在橋接文件中導(dǎo)...
    _森宇_閱讀 3,471評論 0 5
  • swift強(qiáng)勢來襲,想要緊跟腳步,但之前OC的工程推倒重來在時(shí)間和實(shí)踐上都有點(diǎn)傷神,混編就是這個(gè)過渡的橋梁,使...
    _skye閱讀 5,328評論 8 22

友情鏈接更多精彩內(nèi)容