最近比較清閑,就把以前學(xué)習(xí)的過程記錄下吧,多少年后如果能在互聯(lián)網(wǎng)上找到自己的痕跡,想想還是一件蠻值得高興的事情。
正好這兩天加了一個(gè)swift學(xué)習(xí)群想繼續(xù)學(xué)習(xí)swift,發(fā)現(xiàn)好多swift初學(xué)者,在混編這塊還不是很清楚,當(dāng)初自己初學(xué)的時(shí)候也經(jīng)歷了這么一個(gè)痛苦的過程,所以把自己的痛苦過程也寫一下。當(dāng)然這也是第一次寫文章,想想有點(diǎn)小激動呢,各位看官老爺和大神們,請多多關(guān)照,不要罵的太慘...
1. 建立swift 項(xiàng)目
這里以pod集成為前提,怎樣全局使用一些第三方庫,以我們常用的AFN為前提
pod 'AFNetworking'
如果不指定版本號,pod 會自動幫助我們下載最新的版本
好了, 有了swift項(xiàng)目,如果我們需要使用OC的庫,就需要用到橋接文件。如果建立的是OC的項(xiàng)目,那么我們使用swift文件的時(shí)候Xcode會詢問我們是否創(chuàng)立橋接文件。當(dāng)然如果建立的是swift的項(xiàng)目,那么我們就需要去手動創(chuàng)建橋接文件。ProjiectName-Bridging-Header.h? 蘋果推薦的命名格式

不要忘了設(shè)置橋接文件的路徑

這個(gè)時(shí)候你會發(fā)現(xiàn)在swift文件里面還是調(diào)用不了,還需要import 。那這就不是我們想要的效果了,接著往下走。

把我們需要的第三方庫添加進(jìn)去

把路徑設(shè)置好,Build一下 ,大功告成
2.創(chuàng)建OC的項(xiàng)目
oc的項(xiàng)目我們使用第三方庫SVProgressHUD,使用pod集成后,我們創(chuàng)建一個(gè)Svp.swift文件,這個(gè)時(shí)候Xcode會詢問我們是否創(chuàng)建橋接文件

然后我們到TARGETS -> Build Setting -Swift Compiler -General 里面會發(fā)現(xiàn)橋接文件的路徑已經(jīng)寫上去了。但是如果我們選擇Don·t(那個(gè)符號不會打。。。)Create 而去手動創(chuàng)建的時(shí)候 我們就需要自己去把路徑給填寫上
然后同樣的來到Build Setting 下面把路徑設(shè)置下

然后在橋接文件里面寫上我們需要的庫
#import "SVProgressHUD.h"
在創(chuàng)建的swift 文件里面 直接調(diào)用SVP的類? ,OK? 是可以的
# OC 調(diào)用Swift?
上面說的都是swift 怎么調(diào)用oc? ,這里說一下oc調(diào)用swift
一般OC里面我們使用pch文件去管理我們?nèi)こ绦枰玫降囊恍┡渲茫?h文件之類的。如果想做到OC去調(diào)用swift,那么只需要在pch文件導(dǎo)入 "ProjectName-Swift.h" 格式的文件就可以了。這個(gè)文件項(xiàng)目里面找不到的,但是它確實(shí)是存在的,我們可以點(diǎn)進(jìn)去看一下

然后我們在ViewController 去調(diào)用swift文件里面的類

那是不是所有的swift里面定義的類 OC都能去調(diào)用呢?我們在swift文件里面定義一個(gè)類

定義了一個(gè)Da 的類,它是一個(gè)基類,然后我們再去OC的ViewController 里面去調(diào)用,發(fā)現(xiàn)調(diào)用不了。但是如果當(dāng)Da 這個(gè)類去繼承NSObject 或者UIViewcontroller 或者任意一個(gè)OC的類 ,我們都能去調(diào)用它。這里我們就知道了,OC中想要調(diào)用swift定義的類,那這個(gè)類要繼承于OC中定義的類。我們都知道,OC的代碼都能很好橋接到swift中,所以我們swift所使用的類都能繼承于OC,但是反過來,OC去繼承swift中定義的類都是不行的。
還有就是如果 Swift 類中的成員或者方法需要在 OC 中使用,要使用@objc修飾符。
當(dāng)然需要注意的東西還有很多,這里一時(shí)半會也說不完,以后有機(jī)會再慢慢寫吧
好吧,寫的都是一些簡單的東西, 其實(shí)這些東西大家可能都會,當(dāng)然這篇文章最主要還是寫給自己的,一個(gè)鞭策自己,讓自己養(yǎng)成一個(gè)良好習(xí)慣的開端吧。當(dāng)然如果有什么不對的地方,希望大家多多指出