程序员

OC调用Swift中含有inout的函数失败

2018-04-17  本文已影响35人  DSA碼侬

原本OC的项目,想换成Swift项目,故,在OC项目中一步步加入Swift代码,最终代替OC代码

1、首先修改相关参数


参数设置

2、新建swift文件,继承自NSObject

桥接头文件
桥接文件(项目名称-Bridging-Header.h)内部注释是:
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//  翻译:如果swift中要用到的oc文件,请把oc的头文件import这里,暴露给swift使用-为了以后用得到,我也create了该文件

3、例如在swift实现了两个函数

swift

但是,在"BQJR_2015-Swift.h"内部查看如下图所示,明显少了一个函数的定义:

xxx-Swift.h

解决办法:swift方法里面加入inout是不能被oc转换成功调用的,去掉inout即可(inout的意义将一个值类型参数以引用方式传递)

@interface BQSwiftTools (SWIFT_EXTENSION(BQJR_2015))
+ (CGSize)sizeTextWithText:(NSString * _Nonnull)text font:(UIFont * _Nonnull)font maxSize:(CGSize)maxSize SWIFT_WARN_UNUSED_RESULT;
@end

@class UIView;

@interface BQSwiftTools (SWIFT_EXTENSION(BQJR_2015))
+ (void)alertBottomViewWithMsg:(NSString * _Nonnull)msg superView:(UIView * _Nullable)superView;
@end
上一篇下一篇

猜你喜欢

热点阅读