之前的一段時間在學習swift,覺得可以出師了,哈哈哈,遂打算把oc 和swift混編起來,混起來才發(fā)現(xiàn)遠遠比想象的要復雜。當然在這個過程中,自己也學到了不少知識,享受到了不少樂趣,簡記下來,也算是對自己的一個總結(jié),如果能幫到別人那是更好不過的啦!好啦,開始吧!
因為當前正在做的項目是用oc 寫的,也不打算用swift重新寫一遍,所以直接在當前項目里加入swift代碼,這當然是允許的,不過在此之前要做一些準備工作。
1.創(chuàng)建橋接文件
首先我們直接在當前項目上新增加一個文件,語言選擇swift,然后創(chuàng)建,此時,會彈出一個框,詢問你是否需要Xcode自動幫你創(chuàng)建一個橋接文件,當然我們選擇是啦!點擊“Create Bridging Header”

然后我們就發(fā)現(xiàn),項目目錄下多了兩個文件:一個是我們創(chuàng)建的文件,另外一個是Xcode給我們創(chuàng)建的橋接文件:

但是別著急,看見了嗎,報錯啦!這是為什么呢?因為我新創(chuàng)建的文件是繼承了一個之前oc 寫的類作為父類,但是其實swift并不知道這個類是誰,此時Xcode為我們創(chuàng)建的橋接文件就應(yīng)該發(fā)揮作用了,以后swift的類和oc 的類要通信就靠它了,剛才那個紅叉怎么解決呢,別急,接下來就說這個問題。
2.oc 和swift通信的中間人
當然就是這個橋接文件了。我們把swift 要引入的oc 的類,在這個文件里導入,然后再Command+B 一下,看,紅叉沒有了

以后,swift 要用到哪個oc 的類,import 到這個 橋接文件,這樣,swift類就可以愉快得和oc 的類進行通信了。
3.oc 文件使用swift
那反過來怎么辦呢?也很簡單,在你需要使用的那個類里邊,import 這樣一個文件 “項目名-Swift.h”:

這樣oc 就可以訪問swift了。是不是so easy!
在這里我的項目是叫做 iHome,所以我在oc 類里導入的就是 iHome-Swift.h,后綴 “-Swift.h” 不能變,按住Command鍵,點進這個 iHome-Swift.h 看到了什么?這里邊是swift映射成可以被oc 識別的代碼。
據(jù)說這個 Xcode自動生成的橋接文件是可以刪除然后自己重建的,寫成自己喜歡的名字,放到一個固定的屬性就可以,具體可以參考:http://blog.csdn.net/fengsh998/article/details/34440159