我想和EXC_BAD_ACCESS
一起学习调试它,并发现创建这种情况相当困难。
我希望在Scheme
中看到“Enabeling Zombie Objects”的使用什么时候需要它?
甚至没有这项工作 - 将构建设置设置为不使用ARC:
myobj *m = [[myobj alloc] init];
[m release];
[m dealloc];
m = nil;
[m hello];
一些非常好的建议,如:
int * array = (void *)0xDEADBEEF;
array[2] = 10;
它只会让Xcode停止在线路上说不好的访问,我需要更糟: - )
我已经看到它最终出现在main.m中的情况,它是最难调试的。你能创建一个吗?
答案 0 :(得分:3)
试试这个
- (void) badAccess
{
void (*nullFunction)() = NULL;
nullFunction();
}
答案 1 :(得分:0)
EXC_BAD_ACCESS
表示您正在尝试访问您不允许的内存。在这种情况下,几乎任何指向任意地址的指针都会双倍地引发这个异常:
NSString * s = (__bridge id)(void *)0x8BADF00D;
[s uppercaseString];
或者
int * array = (void *)0xDEADBEEF;
array[2] = 10;
我不确定这对练习有多大帮助;我认为发生的事情太明显了,但如果你愿意,那就是你如何做到的。
答案 2 :(得分:0)
我认为你可以使用strcmp(0, "");