天天看點

oc與swift混編,OC調用swift,swift調用OC

1、oc工程調用swift-----自動建立橋接頭檔案

建立一個oc工程:

oc與swift混編,OC調用swift,swift調用OC

設定Product Module Name = 工程名

oc與swift混編,OC調用swift,swift調用OC

建立一個swift檔案:

oc與swift混編,OC調用swift,swift調用OC
oc與swift混編,OC調用swift,swift調用OC

點選自動建立橋接頭檔案:

oc與swift混編,OC調用swift,swift調用OC

設定Objective-C Bridging Header 如下圖:

oc與swift混編,OC調用swift,swift調用OC

至此,我們可以在oc中調用swift了

測試代碼:

import Foundation

class Student: NSObject {
    var name : String = "dzl"
    var age : Int = 22
}
           

在oc中引入頭檔案  "工程名-swift.h" 就可以使用swift中的類了

注:這個頭檔案是不可見的

#import "ViewController.h"

#import "OCuseSwift1-swift.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    Student * s1 = [[Student alloc] init];
    NSLog(@"%@", s1.name);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
           

輸出:

2015-11-13 10:01:32.250 OCuseSwift1[1040:20007] dzl
           

此時swift也是可以引用OC的,隻需将swift需要使用的oc類頭檔案在橋接頭檔案中引入即可,

oc與swift混編,OC調用swift,swift調用OC
oc與swift混編,OC調用swift,swift調用OC

2、oc工程調用swift-----手動建立橋接頭檔案

首先建立一個oc工程,與上面相同

然後建立一個swift檔案,但是不選擇建立橋接頭檔案,如圖:

oc與swift混編,OC調用swift,swift調用OC
oc與swift混編,OC調用swift,swift調用OC

然後手動建立橋接頭檔案,就相當于建立一個普通的頭檔案一樣,隻是命名一定要嚴格按照規則:

oc與swift混編,OC調用swift,swift調用OC

工程設定中指定橋接頭檔案:

oc與swift混編,OC調用swift,swift調用OC

經測試,oc引用swift或者swift引用oc都是可以的,測試方法與上面相同,這裡不再贅述。

3、swift工程調用-----自動建立橋接頭檔案 和 手動建立橋接頭檔案,基本與上面操作一直,不再詳述

其實橋接頭檔案裡面引入oc頭檔案,是為了swift可以通路oc檔案,

在oc中引入   工程名-swift.h   檔案  是為了oc可以通路swift,但這個檔案是不可見的,不過可以通過command+滑鼠左鍵檢視該檔案