在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件,如下图
名字:工程名-Bridging-Header.h
这个桥接文件是 swift 调用OC文件的时候用的
进入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
2 Swift调用OC
在桥接文件中添加需要调用的OC.h文件。如图
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