Objective c 正在捕获EXC\u错误访问

Objective c 正在捕获EXC\u错误访问,objective-c,Objective C,在漫长的一天结束时,我写了以下代码: MyObject *thisObj; // ... lots of code here ... thisObj.name = @"test"; // Which caused an EXC_BAD_ACCESS as I hadn't alloc / init'd thisObj. 我花了很长时间才发现我忘了初始化对象,所以我想知道——有没有办法捕捉到这个。我试着设置僵尸,但似乎没有任何效果 有什么好办法吗?在未将变量初始化为某个值之前,切勿声明变量。甚至

在漫长的一天结束时,我写了以下代码:

MyObject *thisObj;
// ... lots of code here ...
thisObj.name = @"test"; // Which caused an EXC_BAD_ACCESS as I hadn't alloc / init'd thisObj.
我花了很长时间才发现我忘了初始化对象,所以我想知道——有没有办法捕捉到这个。我试着设置僵尸,但似乎没有任何效果


有什么好办法吗?

在未将变量初始化为某个值之前,切勿声明变量。甚至

MyObject *thisObj = nil;

MyObject *thisObj;
可能有一个编译器标志,您可以打开它来警告您这一点

编辑:

是的,您可以使用
-wuninitialized-O
(大写字母O,而不是0)来获取以下内容:


在未将变量初始化为某个值之前,决不要声明该变量。甚至

MyObject *thisObj = nil;

MyObject *thisObj;
可能有一个编译器标志,您可以打开它来警告您这一点

编辑:

是的,您可以使用
-wuninitialized-O
(大写字母O,而不是0)来获取以下内容:


EXC\u BAD\u访问实际上是某种错误的集合。因此,这取决于具体情况,你是否能轻易抓住它(在所有)。例如,NSZombie Enabled不会在所有情况下都起作用。NSZombie会告诉您是否向保留计数为0的对象发送消息。它不能帮助您处理未初始化的变量。EXC_BAD_访问实际上是某种错误的集合。因此,这取决于具体情况,你是否能轻易抓住它(在所有)。例如,NSZombie Enabled不会在所有情况下都起作用。NSZombie会告诉您是否向保留计数为0的对象发送消息。它不能帮助你处理未初始化的变量。戴夫-谢谢。我相信,如果我在又一个漫长的日子里犯了类似的错误,编译器标志将非常有用!戴夫-谢谢。我相信,如果我在又一个漫长的日子里犯了类似的错误,编译器标志将非常有用!