您没有初始化数组(在第 1 行)并且指向未使用的内存。它应该是
NSMutableArray *numbersArray = [[NSMutableArray alloc] init];
您正在做的事情不同于指向nil
哪个是安全的。如果你会做
NSMutableArray *numbersArray = nil;
您会看到该数组始终为空,因为它正在发送一条消息以nil
导致没有任何事情发生(例如,添加对象nil
根本不做任何事情)。
更新(编辑后):
您的代码运行良好。你可能只是没有得到它的作用。
您的前几行创建了一个包含 34 个值的数组-1
NSMutableArray *numbersArray = [[NSMutableArray alloc] init];
for (int i = 0; i<34; i++) {
numbersArray[i] = [NSNumber numberWithInt:-1];
}
然后随机化一个介于 0 和 33 之间的整数值
int r = rand()%34;
然后“当”所有 -1 的数组包含该数字时,您随机化一个新数字。
由于您的第一个数字是正数并且数组中填充了所有 -1,因此您永远不会进入循环体,因此您的代码只会跳过它。
while ([numbersArray containsObject:[NSNumber numberWithInt:r]]) { //it breaks here
r = rand()%34;
}
我无法真正理解您要做什么,但这就是您的代码当前正在做的事情。(它有效,但毫无意义)