最近开始做公司的ios项目,由于是初学刚开始一个多月,经常会碰到app突然crash掉的现象,当出现thread 1:exc_bad_access(code=1,address=0x50000010)的提示时,这种错误通常是内存管理的问题,一般是访问了已经释放的对象导致的,可以开启僵尸对象(Zombie Objects)来定位问题,具体步骤为:
在Xcode的菜单:Product->Scheme->Edit Scheme->
选中Enable Zombie Objects
开启该选项后,程序在运行时,如果访问了已经释放的对象,则会给出较准确的定位信息,可以帮助确定问题所在,如我所遇到的:
BiaoChengOA[791:60b] *** -[__NSArrayM release]: message sent to deallocated instance 0x10250c10
而我此次遇到的问题是一个 非常低级的错误(如下的代码段):
NSMutableArray *tempArray = [[[NSMutableArray alloc] init] autorelease];
for (int i=0;i<20; i++) {
[tempArray addObject:@"test:"];
}
self.dataArray = [tempArray copy];
[tempArray release];
将autorelease去掉,问题解决。
记得在问题被修复后,关闭该功能