談?wù)凷wift與Objective-C混編

在實(shí)際項(xiàng)目的工程中,Swift與Objective-C文件都可以無縫結(jié)合来累。

Swift工程里使用Objective-C文件

當(dāng)在Swift工程中新建Objective-C文件砚作,Xcode會提示是否創(chuàng)建Bridging Header橋接頭文件,如下圖所示

點(diǎn)擊創(chuàng)建嘹锁,Xcode會自動創(chuàng)建一個名為MyProject-Bridging-Header.h的橋接頭文件葫录,其中MyProject為工程名字

MyProject-Bridging-Header.h實(shí)質(zhì)上是一個供swift使用的頭文件,在這里把所有要暴露給swift的oc頭文件都添加進(jìn)去领猾,這樣寫swift的時候就可以直接使用那些oc的類和方法米同。

例如,創(chuàng)建一個OCModel的類

OCModel.h

#import <Foundation/Foundation.h>

@interface OCModel : NSObject
@property (nonatomic, strong) NSString *name;
@end

也可以自己創(chuàng)建一個橋接頭文件摔竿,然后需要在Building Settings中Objective-C bridging Header 添加該橋接文件的路徑面粮,如下圖所示

在Test-Bridging-Header.h中導(dǎo)入所用到的Objective-C文件,如下圖所示

點(diǎn)擊Generated Interface后可以看到Objective-C轉(zhuǎn)換為Swift后的Public接口继低,如下圖所示

我們來試著調(diào)用OCModel這個類

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let model = OCModel.init()
        model.name = "joe"
        print("\(model.name!)")
        
    }

是不是很簡單呢

Objective-C工程里使用Swift文件

在Objective-C工程里創(chuàng)建一個swift文件熬苍,如

如果提示是否創(chuàng)建橋接文件,如下圖所示

BA622B43-4AE9-4C4B-92B7-D10FEBB733EA.png

選擇Don‘t Creat,因?yàn)閟wift本身沒有頭文件柴底,只有.swift婿脸,所以不需要這個橋接文件引用聲明文件。

SwiftModel.swift

import UIKit

public class SwiftModel: NSObject {
    public var name = String()
    public func log() {
         print("\(name)")
    }
}

如果Swift類想要被OC發(fā)現(xiàn)柄驻,必須繼承自NSObject并且使用public標(biāo)記狐树,并且該類中想要被OC訪問的方法也必須使用public標(biāo)記。

當(dāng)Objective-C項(xiàng)目中至少創(chuàng)建一個swift文件時凿歼,會自動生成一個Myproject-Swift.h文件褪迟,它定義了項(xiàng)目中所有的Swift文件,這個文件在工程目錄上并不能找到答憔,但是command加左鍵就能看到這個文件中的導(dǎo)入的Swift文件對外公開的屬性或者方法味赃,如下圖:

然后在需要用到swift文件的地方導(dǎo)入#import "MyProject-Swift.h"

MyProject為工程名稱

ViewController.h

#import "ViewController.h"
#import "MyProject-Swift.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    SwiftModel *model = [[SwiftModel alloc]init];
    model.name = @"joe";
    [model log];
    
}
@end

如果編譯器會紅色報錯,編譯一下就好了虐拓。

swift版本 Generated by Apple Swift version 3.0.2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末心俗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蓉驹,更是在濱河造成了極大的恐慌城榛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件态兴,死亡現(xiàn)場離奇詭異狠持,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瞻润,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門喘垂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绍撞,你說我怎么就攤上這事正勒。” “怎么了傻铣?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵章贞,是天一觀的道長。 經(jīng)常有香客問我非洲,道長鸭限,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任两踏,我火速辦了婚禮败京,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缆瓣。我一直安慰自己喧枷,他們只是感情好虹统,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布弓坞。 她就那樣靜靜地躺著隧甚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渡冻。 梳的紋絲不亂的頭發(fā)上戚扳,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音族吻,去河邊找鬼帽借。 笑死,一個胖子當(dāng)著我的面吹牛超歌,可吹牛的內(nèi)容都是我干的砍艾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼巍举,長吁一口氣:“原來是場噩夢啊……” “哼脆荷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起懊悯,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜓谋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炭分,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桃焕,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年捧毛,在試婚紗的時候發(fā)現(xiàn)自己被綠了观堂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡岖妄,死狀恐怖型将,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荐虐,我是刑警寧澤七兜,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站福扬,受9級特大地震影響腕铸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铛碑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一狠裹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汽烦,春花似錦涛菠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽礁叔。三九已至,卻和暖如春迄薄,著一層夾襖步出監(jiān)牢的瞬間琅关,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捐凭。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓宠哄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容