在項目中右鍵添加一個swift文件,我添加的
LearnSwift.swift
添加後Xcode彈出‘是否配置oc橋接頭文件’的提示,點確認,系統自動生成一個
項目名-Bridging-Header.h
的文件,我的是LearnSwift-Bridging-Header.h
。配置oc橋接頭文件的提示
LearnSwift-Bridging-Header.h
實質上是一個供swift使用的頭文件,在這裏把所有要暴露給swift的oc頭文件都添加進去,這樣寫swift的時候就可以直接使用那些oc的類和方法了。
因爲swift本身沒有頭文件,只有.swift;而oc有.h和.m文件。有了這個聲明,.swift就可以直接使用oc的.h了我的
LearnSwift-Bridging-Header.h
文件內容接下來就可以直接在
LearnSwift.swift
中寫swift代碼啦 ~ 隨便聲明一個類,打些log:我的
LearnSwift.swift
文件內容
編譯直接通過,這就是在swift中使用oc類和方法了,一切順利!在oc中使用swift,我在
AppDelegate.m
中使用剛纔創建的swift類,那麼先要引用swift頭文件,即#import "LearnSwift-Swift.h"
,然後在這個.m文件中就可以任意使用swift創建的類和方法了:LearnSwift *learnSwift = [[LearnSwift alloc] init]; [learnSwift logsth:@"code from oc"];
編譯運行直接過! 輸出:this is a log from swift : code from oc
理解下
#import "LearnSwift-Swift.h"
其實是項目名-Swift.h
,這也是Xcode自動生成的,根據你寫的所有swift代碼,生成一個oc的.h文件,進行類和方法的聲明,這樣在oc裏引用這個頭文件後,就相當於引用了所有swift聲明,可以直接使用了。
原文鏈接:http://www.jianshu.com/p/28b05cca9271/comments/1198449