OC與Swift的相互調(diào)用
總有一些迫不得已的情況,讓我們不得不在Swift中使用OC代碼,或是在OC中使用Swift代碼,那么我們?cè)谶@里初步介紹一下OC與Swift的混編方法
在Swift中調(diào)用OC類(lèi)
- 第一種方案:交給系統(tǒng)半自動(dòng)處理
-
我們?cè)赟wift中創(chuàng)建OC類(lèi)的時(shí)候,Xcode會(huì)提示我們是否要同時(shí)創(chuàng)建橋接文件
圖1.1 創(chuàng)建OC文件的同時(shí)創(chuàng)建橋接文件 -
此時(shí)系統(tǒng)會(huì)幫我們自動(dòng)創(chuàng)建橋接文件,并導(dǎo)入至工程:
圖1.2 系統(tǒng)自動(dòng)創(chuàng)建橋接文件 - 我們只需在橋接文件中導(dǎo)入所有需要用到的OC類(lèi)的頭文件即可
-
#import "testOC.h"
- 外部調(diào)用
let t = testOC()
- 第二種方案:純手動(dòng)導(dǎo)入橋接文件
-
創(chuàng)建橋接頭文件
圖2.1 創(chuàng)建橋接頭文件 -
在下面這個(gè)位置導(dǎo)橋接入頭文件
圖2.2 導(dǎo)入橋接文件 - 在橋接文件中導(dǎo)入需要用到的OC類(lèi)
-
#import "testOC.h"
- 外部調(diào)用
let t = testOC()
OC中調(diào)用Swift類(lèi)
- 在OC中使用Swift代碼要注意以下幾點(diǎn):
- 起項(xiàng)目名字的時(shí)候最好不要有特殊符號(hào)(-/+),不可以使用中文
- Swift中的類(lèi)/屬性/函數(shù)必須用public來(lái)修飾
- 必須導(dǎo)入頭文件:項(xiàng)目名稱(chēng)-Swfit.h
- 在OC中使用Swift代碼的步驟
-
第一步:創(chuàng)建Swift類(lèi),選擇自動(dòng)生成橋接文件
圖3.1 自動(dòng)生成橋接文件 - 第二步:導(dǎo)入頭文件:項(xiàng)目名稱(chēng)-Swift.h
-
#import "testSwiftInOC-Swift.h"
- 第三步:利用public來(lái)修飾Swift類(lèi)/Swift類(lèi)中的屬性/Swift類(lèi)中的方法,否則外界無(wú)法調(diào)用
import UIKit
public class testSwift: NSObject {
public var name : String = ""
public func printName(){
print(name)
}
}
- 外部調(diào)用
testSwift * t = [[testSwift alloc] init];
t.name = @"lyu";
t.printName;