• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

软件测试之性能测试(ios)——OC调用Swift代码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近在oc工程里要引用swiftMonkeypaws,需要使用oc调用swift技术,里面踩了很多坑,这里简单记录一下。

1、oc调用swift

oc调用swift其实很简单,google一下就有很多的教程,可以参考文章1、2、3、4。总体上就是在要调用swift代码的时候,引入头文件 “模块名-Swift.h”,这个头文件对外不可显示,需要手动导入。可以在 Build setting 中查看:

现在我们在 OC 中添加这个头文件:

我们需要查看一下swift到底可以调用那些方法和类。这个时候,我们可以点进这个头文件中去。进入头文件往下拉,可以看到暴露出来的 Swift 的类名和方法:

2、oc调用swift ,涉及cocoapods

上面完全是主工程里使用当然毫无难度,但是我要引入的swiftMonkeypaws是要以cocoapods方式进行引入,这里面就有很多的问题。

2.1 引入头文件名字不一样

头文件要引入的格式为 #import <产品名/模块名-Swift.h>,参考文章5,我们可以在 Build Settings 中查看:

2.2、头文件引入的位置
头文件如果引用在pods工程的起点文件中,还是会报找不到头文件的错误,这里面我没有深入研究pods工程的编译原则,但是不难猜出因为是在pods工程的起点文件中,还没有开始编译pod工程里的swift文件,所以就没有生成oc调用swift的接口文件,导致头文件找不到。我这边的临时解决办法就是把头文件引用移动到了其他的位置

3、oc引用swiftMonkeypaws

oc引用swiftMonkeypaws,网上的文章也很多,可以参考文章6、7、8、9、10。对于参考文章8,矫正一下

var paws: MonkeyPaws?

class MonkeyUIPaws: NSObject 
{        
    @objc public func showMonkeyPawsINUITest ( window: UIWindow ) -> () {
        paws = MonkeyPaws(view: window)    
    }

     @objc class func test() -> () {
        print("test")
    }
}

如果不这么修正,你会收到 unrecognized selector sent to instance,主要原因是因为把MonkeyPaws设置成局部变量以后,这个界面释放以后,MonkeyPaws也被释放,再调用MonkeyPaws的方法就会引发这个错误。所以要把MonkeyPaws设置到类外面。对于unrecognized selector sent to instance这个错误的详细描述可以参考文章11、12。

参考文章:

1、https://blog.csdn.net/studying_ios/article/details/70146879
2、https://www.jianshu.com/p/754396e7e1bd
3、https://www.jianshu.com/p/9f757a09eacd
4、https://www.jianshu.com/p/979ff6350cb6
5、https://zhang759740844.github.io/2017/07/05/Swift和OC的混编实践/
6、http://www.php-master.com/post/151913.html
7、https://www.jianshu.com/p/34bf481d5c13
8、https://www.jianshu.com/p/b763b65005bd
9、https://gysxl.github.io/2017/11/03/基于XCUITest进行的iOSMonkey测试/
10、http://www.php-master.com/post/151913.html
11、https://moto0421.iteye.com/blog/1570876
12、https://juejin.im/entry/58eddde3570c350057f2b975


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
窥探Swift编程之别样的HelloWorld发布时间:2022-07-14
下一篇:
Swift程序流程控制发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap