问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Objective-C工程中集成Swift混合开发完全指南

创作时间:
作者:
@小白创作中心

Objective-C工程中集成Swift混合开发完全指南

引用
CSDN
1.
https://blog.csdn.net/csdnzhaoxiaosheng/article/details/137560786

随着Swift语言的不断发展,越来越多的项目开始采用Swift进行开发。对于已经使用Objective-C开发的项目,如何在其中集成Swift代码成为一个常见的需求。本文将详细介绍如何在Objective-C工程中添加Swift模块,实现两种语言的混合开发。

1. 新建Swift文件

1.1 在工程中新建文件时,选择iOS系统(注意选择正确的系统,否则在引入头文件时可能会出现问题),然后选择Swift File,点击Next进行创建。

1.2 如果这是项目中第一次引入Swift代码,Xcode会弹出一个询问框,询问是否要创建桥接头文件。选择"Create Bridging Header",系统会自动创建一个名为ocrRequestDemo-Bridging-Header.h的文件(格式为项目名称-Bridging-Header.h)。

如果新建Swift文件时没有弹出创建桥接头文件的弹框,且项目中没有Swift的桥接文件,可以手动创建一个.h文件,并将其命名为ocrRequestDemo-Bridging-Header.h。创建完成后,需要到Build Settings中查找Swift Compiler - General配置,确保创建的.h文件的名字与配置中的Objective-C Bridging Header选项一致。

2. 配置Defines Module

在项目设置中,需要确保"Defines Module"选项被设置为"Yes",这样Swift代码才能被正确编译和使用。

3. 创建OC对象,声明并实现方法

3.1 创建一个Objective-C类OCObject,并在其中声明一个实例方法logFunction

//  OCObject.h
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface OCObject : NSObject
-(void)logFuction;
@end
NS_ASSUME_NONNULL_END  

3.2 在.m文件中实现该方法,输出日志信息。

//  OCObject.m
#import "OCObject.h"
@implementation OCObject
-(void)logFuction{
    NSLog(@"OCObject - 日志输出");
}
@end  

4. 在Swift的Header文件中添加需要使用的OC头文件

在桥接头文件中导入需要在Swift中使用的OC头文件。

//  ocrRequestDemo-Bridging-Header.h
#import "OCObject.h"

5. 声明Swift类和方法

在Swift文件中声明一个类ocrRequest,需要在类和函数方法前面添加@objc标记,这样OC代码才能调用这些方法。同时,Swift类需要继承自NSObject

//  ocrReqDemo.swift
import Foundation
@objc class ocrRequest: NSObject{
   @objc func request(){
        let ocobj = OCObject()
        ocobj.logFuction()
    }
}

6. 创建对象引用对象实例方法

6.1 在ViewController中引入ocrRequestDemo-Swift.h文件,创建一个ocrRequest的对象ocrReq,并调用其实例方法request

//  ViewController.m
#import "ViewController.h"
#import "ocrRequestDemo-Swift.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    ocrRequest *ocrReq = [[ocrRequest alloc]init];
    [ocrReq request];
}
@end

6.2 最终输出日志信息。

通过以上步骤,你就可以在Objective-C工程中成功集成Swift代码,并实现两种语言之间的相互调用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号