iOS库(五)OC与Swift混编

2023-04-11  本文已影响0人  fanren

前言

Framework的开发中,难免会遇到OC与Swift混编的情况;

一、OC调用Swift

1. 定义要被调用的Swift类与方法;

import Foundation
public class SwiftObject: NSObject {
    @objc public func callOC() {
        print("======")
    }
}

2.OC调用Swift类

#import "FirstObject.h"
// 引入头
#import <First/First-Swift.h>

@implementation FirstObject

- (void)callSwift
{
    // 直接调用Swift类
    SwiftObject *test = [[SwiftObject alloc] init];
    [test callOC];
}
@end

二、Swift调用OC

在工程中,Swift如果想调用OC,需要建立一个桥接文件;同理,在Framework中也一样,需要创建一个桥接文件

module JiuWuVisitorSwift {
    header "OCObject.h"
    export *
}

这里header中,引入的是OCObject.h相对于module.modulemap的路径

import Foundation
// 引入转接文件
import FirstSwift

public class SwiftObject: NSObject {
    @objc public func callOC() {
        // 调用oc类
        let test = OCObject()
        test.test()
    }
}

如果Framework中包含Swift,并且把Framework编译成静态库,可能会报一下错误;


解决办法:在主工程中创建一个空的Swift文件;
上一篇 下一篇

猜你喜欢

热点阅读