xcode - 在obj-c项目中使用swift

import swift to objective-c

简介

因为swift没有头文件,ojbc加载时xcode可以自动为swift类分配头文件


项目中调用

引用swift相关header到任意同target下的.m/.mm文件中

#import "项目名-Swift.h"

在组建中使用

#import 

在obj-c中声明swift类和协议

在header中设置

@class MySwiftClass;
@protocol MySwiftProtocol;

官方教程:
https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_swift_into_objective-c

注意事项:

  • [可选] objc header中加不加@class来提前声明swift类型都可以,取决于.h是否对swift类型有需求
  • [必须] 要被调用的swift类型,必须基于NSObject
  • [必须] swift文件中的类和方法如果要被target-Swift.h自动编译并被objc访问就必须在修饰符前添加@objcpublic修饰符
  • [必须] swift对象的创建:
    • SObj* obj = [[SObj alloc]init];
    • SObj* obj = [SObj new];
  • [可选] 除非需要swift调用objc类,否则不必创建target-Bridging-Header.h,当然如果系统自动创建了,也别多此一举删掉它
  • [必须] @objc public func test(path:String)swift方法调用的时候使用方法:
SObj* obj = [[SObj alloc]init];
[obj testWithPath:@"string"];

不使用@objc会导致无法自动生成swift header,导致objc找不到swift类型,会提示类似Use of undeclared identifier '类名'的错误

你可能感兴趣的:(xcode - 在obj-c项目中使用swift)