WebThread:signal SIGABRT 和 libc++abi.dylib:terminating with uncaught

今天遇到一个很顽固的bug,解决之前都觉得很难,但是搞定之后,才恍然大悟,原来如此简单,

今天的问题是:日志里只显示libc++abi.dylib: terminating with uncaught exception of type NSException这个,其他信息一点都没有,然后各种调试,也就多了这么一条WebThread : signal SIGABRT,我完全懵了,一点都不知道是什么问题,

问题背景:app里有一个活动页面是h5的页面,然后通过点击h5页面里的注册和登录按钮,让页面跳到原生的app的登陆和注册页面进行下面的操作,因为此前做过其他的类似的功能的都没问题,很自然的觉得肯定也是没问题的,结果就给我报了错误,错误停留在用户名的那个textField那里,我奇怪的很,从app原生页面进入注册和登录页面没一点问题,但是从h5页面进入的话就会报错,我就奇了怪了不清楚为什么会这样,并且错误提示就是上面那两个,没有任何的多余信息,

解决办法:我各种百度看到好多人都是说 什么 xib 连线不对  ,对象重复释放等等这些解决方法,我就奇了怪了 我是纯代码写的完全没有xib根本不会存在连线的问题,对象也没有重复释放,我完全搞不懂状况,各种博客都看过就是没办法,最后突然想到一个办法 不知道行不行 只能试一试了,就自己写了try catch方法搞,方法如下:

@try{  

      

          //这里写你的造成app闪退的代码

    }  

@catch

(NSException *exception) {  

        NSLog(@"exception:%@"

, exception);  

    }  

@finally {  

          

    }  

​​然后再次运行程序到了这里依然会崩溃,点击跳过断点(有时候可能要多点几次),然后就会发现日志栏里出现了新的关键的日志如下:

-[RegistViewController phoneField] [第139行] exception:Only run on the main thread!

一看就明白了,意思是要在主线程里执行(这才是关键日志),后来经过修改就可以搞定了,

最后我​想了想 原因应该是  UITextField 这种UI控件必须要在主线程里刷新的,而我从h5跳到原生页面是开了子线程去跑的,所以有问题,改完之后就没问题了,希望能帮到一些和我犯一样错误的同学吧,毕竟 这种问题不容易搞,错误日志信息很少,没有重要信息,很麻烦,,,

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,261评论 25 709
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,947评论 1 180
  • 每一次经过你的身旁脚步轻松随性四季更替的每一刻习惯了你种种色彩不一样的气息渗透我为何失去感觉 阳春的三月来到春风送...
    浅浅是水阅读 3,674评论 69 69
  • 一转眼,又一年过去了,大三上学期已经结束了,伴随着,很多事情,都结束了。大三这一年,好像才是真正开始第二次成长的时...
    未燃兮阅读 2,910评论 0 2
  • 1、归纳法 2、演绎法 3、情景法 4、对比法 5、发现法 6、图示法 7、公式法 8、翻译法 9、以旧带新法 1...
    想隐居的雪阅读 3,493评论 0 0