快行感悟和总结-iOS7webview交互JS的crash

起初我们在订单中心做了许多订单的列表,但是订单详情页面只供给用户展示,所以因为人力不够等等原因,我们选择用UIWebView来展示订单详情。但是后来由于业务拓展需求,需要在UIWebView做一些hybrid交互问题就来。

屏幕快照 2016-03-29 下午3.42.45.png

在iOS8,iOS9上点击“再次预定”“返程预定”OK。
在iOS7下点击则出现了crash. (按照网上下载xcode6.4可以解决iOS7模拟器的问题,我删除了xcode7.2再安装,发现cocopods好多第三方库已经不能在低版本的xcode6.4的SDK上跑代码,各种报错。然后又删掉了xcode6.4重新装xcode7.3最新版,此处花费去了一天)
哎嘛,真是百思不得其解,郁闷了好几天,关键是xcode7.3真机测试iOS7也无法链条,只好打个企业包弹窗查看是否走进了哪个方法,一步一步来排查,后来在QA的手机上看了一个crash日志,(最后就连看log搞的整个xcode都崩溃,人霉的时候喝水都塞牙缝)发现最后崩溃在一个UIWebView的一个私有方法内,于是我查了一下, webView:didFirstLayoutInFrame.
http://blog.csdn.net/hursing/article/details/8791533

屏幕快照 2016-03-29 下午3.56.15.png

此处其实是依旧比较迷茫的,但是我看了该API方法好想跟Layout有关,我查了一下代码,居然发现了有相关的代码

屏幕快照 2016-03-29 下午3.58.44.png

于是我又搜索了一些关于iOS7 webView的crash的问题
https://segmentfault.com/q/1010000002575561/a-1020000002575775

屏幕快照 2016-03-29 下午4.01.20.png

最后我把自己项目工程文件里面那段关于- (void) viewWillLayoutSubviews的方法给删除掉,再测试,就OK啦,crash也顺利得到解决,真是哭死。
总结就是,可能开发过程中我们RD自己测试会不能发现隐藏的问题,需要一些非常规手段来做,比如点击这个再次预定,返程预定,iOS7上订单中心到详情页面OK啦没有问题,但是从填写订单页面进入支付到订单详情,再点击一次去支付调起钱包,此时整个webView点击返回,点击去支付,点击再次预定,返程预定都没有效果了,最后发现是我在页面将要消失的地方将webview.delegate = nil.却在页面将要出现的地方没有重新赋上delegate = self。等等疑难杂症。可能也是因为自己粗心大意没有注意到漏掉了。遇到问题不要哭,不要怕,这一切都将成为过去。
最后 thanks~!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,194评论 4 61
  • “我们测试了,失败了。” 在A/B test的世界里典型的借口是猖獗的, 但它会忽略一个事实:一个概念本身是完全不...
    tonywon阅读 3,173评论 2 4
  • 清晨明媚的光线,透过窗帘照射着洁白的房间,书桌上的那本册子,随着笔尖的晃动浮现出一个又一个人物,在阳光的照耀下,伴...
    等一个人咖啡nan阅读 884评论 0 1
  • 太和殿内,文明太后牵着拓跋宏、冯诞正听取中常侍、吏部尚书张佑的报告,他也呈上了源贺、高允、高闾等老臣的一些奏章,无...
    惘然生烟阅读 3,345评论 0 5