捕获EXC_BAD_ACCESS

Sno*_*ash 0 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.
Run Code Online (Sandbox Code Playgroud)

我花了很长时间才弄清楚我忘了初始化物体,所以我想知道 - 有没有办法解决这个问题.我试过设置NSZombie,但似乎没有做任何事情.

有关最佳方法的任何想法吗?

Dav*_*ong 5

如果没有将变量初始化为某个值,则不要声明变量.甚至

MyObject *thisObj = nil;
Run Code Online (Sandbox Code Playgroud)

比.更好

MyObject *thisObj;
Run Code Online (Sandbox Code Playgroud)

可能有一个编译器标志,你可以打开警告你这个.

编辑:

是的,您可以使用-wuninitialized -O(大写O,而不是0)来获得:

在此输入图像描述