OC項(xiàng)目混編Swift
OC項(xiàng)目創(chuàng)建第一個(gè)Swift文件的時(shí)候會(huì)提示創(chuàng)建橋接文件已球,我們選擇Create Bridging Header
//橋接文件固定格式:wenDao-Bridging-Header.h(wenDao為項(xiàng)目名稱)
//在橋接文件 導(dǎo)入 原pch要導(dǎo)入的全局 引用
Targets -> Build Settings -> Packaging 中設(shè)置Defines Module 為YES //可選
創(chuàng)建SViewController.swift
class SViewControllera: UIViewController {
? ? @objc var name: String = ""
? ? @objc func onClickEatAct() {
? ? ? ? print(name)
? ? }
? ? override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
? ? ? ? onClickEatAct()
? ? }
}
// 在OC中使用SViewController.swift
//#import "wenDao-Swift.h" //項(xiàng)目名-Swift.h
SViewController *vc = [[SViewController alloc]init];
vc.name = @"lhw";
[vc eat];
[self.navigationController pushViewController:vc animated:YES];
//如果誤刪橋接文件,重新創(chuàng)建一個(gè)
//如果未選Create Bridging Header,重新創(chuàng)建或?qū)雜wift泄鹏,選則下就好了
OC項(xiàng)目混編Swift優(yōu)缺點(diǎn)
缺點(diǎn)1、Swift 文件增改坯屿,不能實(shí)時(shí)編譯到 OC中淹真,要強(qiáng)寫讓后編譯,才有正確提示纠永。(#import "wenDao-Swift.h" 更新成功后才有提示)
1鬓长、swift要繼承OC所有pch方法,最簡(jiǎn)單暴力:在橋接文件wenDao-Bridging-Header里導(dǎo)入尝江,所有pch類
1涉波、swift類的方法和屬性 要在OC中使用 得加@objc修飾
2、swift的deinit 取代 OC的dealloc
3、swift 分類自動(dòng)全局引用啤覆,用public 修飾屬性
4苍日、swift不能使用OC宏
5、swift類方法有“class”或“static”修飾窗声、對(duì)象方法則無(wú)
6相恃、Swift 中的屬性沒有對(duì)應(yīng)的實(shí)例變量,屬性的后端存儲(chǔ)也無(wú)法直接訪問笨觅。
7拦耐、swift中不需要 import
8、枚舉:和 C 和 Objective-C 不同见剩,Swift 的枚舉成員在被創(chuàng)建時(shí)不會(huì)被賦予一個(gè)默認(rèn)的整型值
9杀糯、其他編程語(yǔ)言所不同的是,Swift 并不要求你為自定義類去創(chuàng)建獨(dú)立的接口和實(shí)現(xiàn)文件炮温。你所要做的是在一個(gè)單一文件中定義一個(gè)類火脉,系統(tǒng)會(huì)自動(dòng)生成面向其它代碼的外部接口。
10柒啤、OC中類是唯一能定義方法的類型倦挂,swift中 類/結(jié)構(gòu)體/枚舉 上定義方法都可以
1、swift 不能繼承自定義OC類
OC項(xiàng)目混編Swif(bug-新swift不能編譯到xxx-Swift.h里)
把舊的swift文件都刪除担巩,重新導(dǎo)入新的swift方援,會(huì)提示創(chuàng)建橋接文件,我們選擇Create Bridging Header
Swift項(xiàng)目混編OC
當(dāng)在Swift中使用OC文件的時(shí)候涛癌,只需在橋接文件即projectName-Bridging-Header.h文件中引入需要的頭文件犯戏。
具體使用,按照對(duì)應(yīng)的Swift語(yǔ)法結(jié)構(gòu)來(lái)即可拳话。