之前开发项目都是用Objective-C开发的,现在有新的功能需要集成到项目中,要求用Swift,作为资深地中海码农当然是有求必应,下边将介绍如何在OC工程中集成Swift功能模块。

1.新建Swift文件

1.1 在工程中newFile,选择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 (项目名称-Bridging-Header.h)。你可以创建完Swift文件后 到 Build Setting 中 查找 Swift Compiler - General 配置,一定是创建完Swift后,不然 Build Setting 中不会有 Swift 的这个配置。在配置中找到 Objective-C Bridging Header 选项,观察后边配置的.h文件的名字,确保创建的.h文件的名字与这里配置的相同(如下图)

2.配置Defines Module

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

3.1这里创建了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头文件

//  ocrRequestDemo-Bridging-Header.h

#import "OCObject.h"

5.声明Swift类和方法

在Swift文件中声明一个类 ocrRequest,需要在类和函数方法前面添加 @obcj 才能被OC的类调用,同时Swift类需要继承自NSObject

//  ocrReqDemo.swift

import Foundation

@objc class ocrRequest: NSObject{
   @objc func request(){
        let ocobj = OCObject()
        ocobj.logFuction()
    }
}

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

6.1将ocrRequestDemo-Swift.h文件引入ViewController,创建一个ocrRequest的对象ocrReq,用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最终输出日志

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐