有关这个错误在这里做一个简单的总结,因为遇到过两次而且第一次花了几个小时来解决,很是浪费时间。
现象,点击按钮时,程序crash掉,在console中看到的最后两句是:terminate called after throwing an instance of 'NSException' Program received signal: "SIGABRT".
第一次遇到的时候先在网上查了一下,大多数都说的是调用的那个实例被先释放掉了,所以会报此错误,但是我仔细检查了代码,而且在释放的时候打断点查看,实例并没有被先释放掉,继续查找原因,后来发现被调用的方法被宏屏蔽掉了,汗,宏屏蔽在调用方法的前一个方法前,所以一直未察觉,所以能确定,如果方法未定义,则会报此错误。
第二次遇到该错误是在写一个Demo的时候,原语句如下:
[pButton addTarget:self action:@selector(ButtonClick:) forControlEvents:UIControlEventTouchUpInside];
首先排除实例首先被释放掉的原因,后来继续查找,居然是在selector中的方法后面多打了一个冒号。
改为 [pButton addTarget:self action:@selector(ButtonClick) forControlEvents:UIControlEventTouchUpInside];
问题解决,为什么打一个冒号会crash的原因有时间再研究吧,先总结到这里,研究了继续完善该文章.....