swift oc 混編

swift 混編 oc

轉(zhuǎn)自
1.創(chuàng)建swift項目
2.新建oc類

方式一:在一個全新的Swift,利用第一次新建提示的方式自動添加橋接頭文件。
這個是在swift項目中,創(chuàng)建其他語言類的時候(OC,C等),系統(tǒng)會提示你添加一個橋接頭文件,如圖

image.png

生成格式為"你的工程名字-Bridging-Header.h"的文件

有的可能是xcode配置問題,沒有提示,那也可以自己創(chuàng)建一個,格式得按照以上的格式,但還有一種方式,不僅能創(chuàng)建還可以改變這個格式,取一個自己喜歡的文件名,但需要修改一些配置.

方式二:新建一個頭文件,名為:JeckHeader.h
在targets->build settings ->Object-C Bridging Header 位置設(shè)為Swift/JeckHeader.h,如下圖所示,這個頭文件也就是橋接頭文件,代碼一會兒再說.

image.png
image.png
image.png

** 格式為"工程名-swift.h",它就是項目中所有的swift類的頭文件. **

//  SwiftClass.swift 類中的代碼,這里邊只是添加了一個函數(shù),OC的類會調(diào)用這個方法  
  
import UIKit  
  
class SwiftClass: NSObject {  
    func sayHello(name:String) -> String {  
        let greeting = "Hello" + name + "!"  
        return greeting  
    }  
  
} 
//  OCClass.m  OC的.m文件,這里實現(xiàn)了兩個方法并定義了一個C語言的函數(shù),為了方便對比,方法里實現(xiàn)了block,在這個類中演示:OC調(diào)用swift類中的方法  
  
#import "OCClass.h"  
  
#import "SwiftTest-swift.h"http://細(xì)心的朋友一定注意到了,項目文件中并沒有這個頭文件,但實際上項目中是有的,你也可以用command+鼠標(biāo)左鍵跳進(jìn)去查看,是隱藏的,如果你是按照我前邊的講的創(chuàng)建的swift文件,那你在這里是可以導(dǎo)入這個頭文件的,格式為"工程名-swift.h",它就是項目中所有的swift類的頭文件.  
  
@implementation OCClass  
  
-(void)desc22{  
    //聲明block  
    int (^p)(int, int);  
    //把函數(shù)賦值給block  
    p = ^(int a, int b){  
        return a + b;  
    };  
    //使用  
    int result = p(10,40);  
    NSLog(@"swift調(diào)用OC方法輸出result:%d\n",result);  
    //OC中調(diào)用swift函數(shù)  
    SwiftClass *sc = [[SwiftClass alloc] init];//創(chuàng)建swift對象  
    NSString *str =[sc sayHelloWithName:@"jeck"];//用swift的對象調(diào)用自己的函數(shù)(方法)  
  
    NSLog(@"OC中調(diào)用swift函數(shù)輸出 %@",str);      
}  
//定義函數(shù)  
int sum2(int a, int b){  
    return a + b;  
}  
  
-(void)desc2{  
    //2.聲明block  
    int(^p)(int, int);  
      
    //3.把函數(shù)賦值給block  
    //p = sum2;  
    p = ^(int a, int b){  
        return a + b;  
    };  
      
    //4.使用  
    int result = p(10,40);  
    printf("swift調(diào)用OC方法輸出result:%d\n",result);  
}  

//橋接頭文件SwiftTest-Bridging-Header.h  
//導(dǎo)入OC類  
#import "OCClass.h"  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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