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];
}
答
更改您的
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
此代码看起来没问题,最可能的错误是在其他地方。尝试在异常抛出时使用断点进行调试,并查看代码实际崩溃的位置 – Vladimir
我使用断点将崩溃缩小到for循环的退出位置。这似乎是一个疯狂的错误! – ajnet
can + randomItem方法会成为问题吗? – Vladimir