OC 與 Swift 相互呼叫

hey同學發表於2018-05-21

在OC專案中建立一個swift檔案的時候,Xcode 會提示 需要建立一個橋接檔案,點確定建立橋接檔案,Xcode會自動建立一個橋接檔案,如下圖

名字:工程名-Bridging-Header.h

這個橋接檔案是 swift 呼叫OC檔案的時候用的

OC 與 Swift 相互呼叫
進入TARGETS ->Build Settings -> Packaging 中

設定Defines Module為YES

設定 Product Module Name ,也可以不設定,預設為工程的名字。這個在後面會用到

1、OC呼叫Swift

在OC需要用到的swift檔案中 匯入檔案 <Product Module Name -Swift.h> 因為 Product Module Name 預設是工程的名字

所以直接匯入 #import <工程名-Swift.h>

OC 調 Swift 程式碼

//
//  ViewController.m
//  SwiftInOc
//
//  Created by Z_z_z on 2018/5/21.
//  Copyright © 2018年 zzz. All rights reserved.
//

#import "ViewController.h"
#import <SwiftInOc-Swift.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    SwiftController * swift = [[SwiftController alloc]init];
    [swift log];
}
複製程式碼

log

OC 與 Swift 相互呼叫

2 Swift呼叫OC

在橋接檔案中新增需要呼叫的OC.h檔案。如圖

OC 與 Swift 相互呼叫

Swift調OC程式碼

//
//  ViewController.swift
//  OcInSwift
//
//  Created by Z_z_z on 2018/5/21.
//  Copyright © 2018年 zzz. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let ocVC = OcController();
        ocVC.log();
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

複製程式碼

log

OC 與 Swift 相互呼叫

相關文章