NSMutableArray EXC_BAD_ACCESS(code = 1)

NSMutableArray EXC_BAD_ACCESS(code = 1)

问题描述:

我不知道为什么,但我的NSMutableArray'items'不会超过5个元素。NSMutableArray EXC_BAD_ACCESS(code = 1)

有人可以帮忙吗?我正在关注Big Nerd Ranch iOS编程书。

此代码工作正常:

NSMutableArray *items = [[NSMutableArray alloc] init]; 
for (int i = 5; i < 10; i++) { 
    BNRItem *p = [BNRItem randomItem]; 
    [items addObject:p]; 
} 

但是如果我到4或更小程序崩溃退出for循环时改变i的初始值:

NSMutableArray *items = [[NSMutableArray alloc] init]; 
for (int i = 4; i < 10; i++) { 
    BNRItem *p = [BNRItem randomItem]; 
    [items addObject:p]; 
} 

错误截图:http://db.tt/3CdueSYh

+1

此代码看起来没问题,最可能的错误是在其他地方。尝试在异常抛出时使用断点进行调试,并查看代码实际崩溃的位置 – Vladimir

+0

我使用断点将崩溃缩小到for循环的退出位置。这似乎是一个疯狂的错误! – ajnet

+0

can + randomItem方法会成为问题吗? – Vladimir

更改您的

NSArray *randomNounList = [NSArray arrayWithObjects:@"Bear", @"Spork", "Mac", nil]; 

到:

NSArray *randomNounList = [NSArray arrayWithObjects:@"Bear", @"Spork", @"Mac", nil]; 

你忘@"Mac"

希望它可以帮助

+0

感谢您的帮助! – ajnet

在你在你发表的评论要添加一个C字符串,"Mac",你randomNounList阵列的屏幕截图。您需要使用@符号将其作为NSString。

我怀疑随机选择此条目时发生崩溃。

我很惊讶这个编译,我怀疑你忽略了一些警告。

+0

哎唷,很好看!我开始认为这是与该阵列太早自动释放有关...谢谢! – ajnet