【发布时间】:2011-11-22 08:47:17
【问题描述】:
if ([diamonds count] == 0) {
[self toggleWinLevel];
}
当 diamonds 是 NSMutableArray 并且 toggleWinLevel 是实例方法时,如果我运行此应用程序,它会在此行崩溃并显示 EXC_BAD_ACCESS:
if ([diamonds count] == 0) {
这肯定与我的数组有关,因为即使我将 int 或 NSUInteger 或 NSNumber 分配给数组的计数,这种情况也会继续发生。我的 NSMutableArray 已分配并初始化。问题是什么?
更新 1:
我已经在这个方法中分配并初始化了它,它确实被调用了,我有 NSLog,它确实在控制台中登录以进行证明:
-(void)setUpObjects {
NSLog(@"Setting Up Objects"); // This is printed in my console
[levelNumberLabel setHidden:YES];
diamonds = [[NSMutableArray alloc] init];
rocks = [[NSMutableArray alloc] init];
if (levelNumber < 3) {
diamonds = [NSMutableArray arrayWithObjects:@"1", nil];
} else if (levelNumber > 2 <= 4) {
diamonds = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
} else if (levelNumber > 4 <= 6) {
diamonds = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
} else if (levelNumber > 6 <= 10) {
diamonds = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
} else if (levelNumber > 10) {
diamonds = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", nil];
}
if ([diamonds count] > 1 <= 2) {
rocks = [NSMutableArray arrayWithObjects:@"1", @"2", nil];
} else if ([diamonds count] > 2 <= 5) {
rocks = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
} else if ([diamonds count] > 5) {
rocks = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
}
[self drawObjects];
}
BTW diamonds(数组)是一个实例变量
【问题讨论】:
-
“我的 NSMutableArray 已分配和初始化” - 你能说明你在哪里做的吗?因为这似乎是这里的问题。请包括属性声明和初始设置代码。
-
BTW diamonds(数组)是一个实例变量
-
if (levelNumber > 2 <= 4)这应该有效吗?我手头没有一个 ObjectiveC 编译器,但我猜这会转化为if ((levelNumber > 2) <= 4),这总是正确的。
标签: objective-c xcode nsmutablearray nsarray