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
实现了两个函数
但是,在"BQJR_2015-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