之前的一段時間在學習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)建的橋接文件就應該發(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