libc++abi.dylib: terminate_handler unexpectedly threw an exception 报错
2015-07-29 09:58
337 查看
运行xcode工程时,有时候会遇到”libc++abi.dylib:
terminate_handler unexpectedly threw an exception”错误,app莫名其妙就crash掉了
友盟报错
NSScanner: nil string argument
Umeng: Read binary image info failed!
其实不是友盟问题,是自己程序中有了个错误,只是打开了友盟的调试开关,所以报了友盟错误。
现在唯一的信息点是libc++abi.dylib,这个库到底是做什么的?从后缀看,是一个动态库,那么会不会是因为发生了一些动态错误?而按经验来看,一般的动态错误基本是因为动态类型错误引起,在object-c语言中,会发生动态类型错误的可能基本存在于不可变类型与可变类型之间的转换,那么我们的查错范围将优先限制在不可变类型与可变类型转换上,是否我们对一个不可变类型进行了修改操作?当然,编译器没有那么傻,如果直接对一个不可变类型进行修改操作,是会直接报错的,那么就剩下另一种可能,
程序将一个不可变类型赋值给可变类型,然后对可变类型进行了修改操作,这样可以通过静态检查,但是动态运行的时候,就会发生类型错误。基于以上分析,我们可以跟踪断点,会发现程序在对mutable对象进行add、set等操作时挂掉,而这个对象实际上赋值的是一个不可变对象。常见的情况是把一个NSArray对象赋值给一个NSMutableArray对象,然后进行了delete、add等修改操作,或者把一个NSDictionary对象赋值给一个NSMutableDictionary对象,然后进行了set等操作。
解决办法很简单,赋值的时候进行类型转换:
terminate_handler unexpectedly threw an exception”错误,app莫名其妙就crash掉了
友盟报错
NSScanner: nil string argument
Umeng: Read binary image info failed!
其实不是友盟问题,是自己程序中有了个错误,只是打开了友盟的调试开关,所以报了友盟错误。
现在唯一的信息点是libc++abi.dylib,这个库到底是做什么的?从后缀看,是一个动态库,那么会不会是因为发生了一些动态错误?而按经验来看,一般的动态错误基本是因为动态类型错误引起,在object-c语言中,会发生动态类型错误的可能基本存在于不可变类型与可变类型之间的转换,那么我们的查错范围将优先限制在不可变类型与可变类型转换上,是否我们对一个不可变类型进行了修改操作?当然,编译器没有那么傻,如果直接对一个不可变类型进行修改操作,是会直接报错的,那么就剩下另一种可能,
程序将一个不可变类型赋值给可变类型,然后对可变类型进行了修改操作,这样可以通过静态检查,但是动态运行的时候,就会发生类型错误。基于以上分析,我们可以跟踪断点,会发现程序在对mutable对象进行add、set等操作时挂掉,而这个对象实际上赋值的是一个不可变对象。常见的情况是把一个NSArray对象赋值给一个NSMutableArray对象,然后进行了delete、add等修改操作,或者把一个NSDictionary对象赋值给一个NSMutableDictionary对象,然后进行了set等操作。
解决
解决办法很简单,赋值的时候进行类型转换://mutableArr:可变数组 arr:不可变数组 //mutableDic:可变字典 dic:不可变字典 //赋值时,需要进行可变类型转换 mutableArr = [NSMutableArray arrayWithArray:arr]; mutableDic = [NSMutableDictionary dictionaryWithDictionary:dic];
相关文章推荐
- C++new的用法
- 栈的进栈和出栈,栈的简单操作
- VC++学习(VS2010)--设置智能提示
- 纯c结构体与c++结构体的理解
- C++对象模型——对象的差异(第一章)
- 关于C++的STL的学习与再认识(一)
- 读书笔记MoreEffectiveC++(26)
- 读书笔记MoreEffectiveC++(27)
- 16道嵌入式C语言面试题
- 读书笔记MoreEffectiveC++(25)
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- 为学IOS,进击中...之C语言指针练习
- C++函数指针
- 【OC-2】OC语言基础二(自定义初始化、点语法)(连载二)
- Box2D C++教程 第一节:简介
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- C++ outline and interview questions (3): Class
- 中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
- Google C++ Coding Style:引用参数
- [C++]strcpy和strcpy_s安全性比较