*参考: http://www.ithao123.cn/content-8030945.html
*参考: http://www.cnblogs.com/ziyi--caolu/p/4825633.html
在我们运行项目的时候,有时会莫名其妙的程序崩溃,查看原因,发现空字符串报错,如下所示:
NSScanner: nil string argument
NSScanner: nil string argument
libc++abi.dylib: terminate_handler unexpectedly threw an exception
这一般都是空字符串错误,你打一下全局断点,锁定报错的位置,然后仔细检查下。从参考的文档中,无非有以下几种错误,而我的错误就在其中,如果遇见了,可以从以下方法查找一下:
1.对某一个空数组使用[array objectAtIndex: i ]方法,会出现这个错,而不是报数组越界的错误;
2.把一个NSArray、NSDictionary对象赋值给一个NSMutableArray、NSMutableDictionary对象,然后对该对象进行了delete、add、set等修改操作,也可能报这个错;
3.使用storyBoardnib或者Xib搭建界面时,代码中没有相应控件,但sbnib中已对该控件连接(关联了一次,但是发现问题,删除关联,重新定义属性-----可能并没有完全删除),也同样报这个错,且多数出现在页面跳转的时候,这时候要点开xb仔细检查,是否存在警告什么的东西:
但是有时候连警告可能都不会有,要仔细找,这个错其实挺烦的,所以要随时将不要连接的线去掉(storyboardnib、XIB 与 代码要同步控件变量)。
而我就是遇见过第二和第三种情况,我在别人的文章中还看到说,当你集成第三方、友盟、定位等也会遇到这个错粗,但是我没遇到。。。。
4. 在UITableView中使用reuseIdentifier,有误的id也会导致这个错;
5.使用第三方框架的时候也会出现这种问题,常见的就是刷新控件之间的不兼容。
这些就是我看到的这种错误的原因,你如果遇到这个,可以先按着这个思路查看一下,锁定住错误原因,这样也就能快速的找到解决方法了。