我在漫长的一天结束时编写了这段代码:
MyObject *thisObj;
// ... lots of code here ...
thisObj.name = @"test"; // Which caused an EXC_BAD_ACCESS as I hadn't alloc / init'd thisObj.
我花了很长时间才弄清楚我忘了初始化物体,所以我想知道 - 有什么方法可以捕捉到它。我试过设置NSZombie,但似乎没有做任何事情。
有关最佳方法的任何想法吗?
答案 0 :(得分:5)
如果没有将变量初始化为某个值,则不要声明变量。甚至
MyObject *thisObj = nil;
优于
MyObject *thisObj;
可能有一个编译器标志可以打开以警告你。
编辑:
是的,您可以使用-wuninitialized -O
(大写O,而不是0)来获取此信息: