以下代码中断,返回'(lldb)':
NSMutableArray *numbersArray;
numbersArray = [[NSMutableArray alloc] init];
for (int i = 0; i<34; i++) {
numbersArray[i] = [NSNumber numberWithInt:-1];
}
int r = rand()%34;
while ([numbersArray containsObject:[NSNumber numberWithInt:r]]) { //it breaks here
r = rand()%34;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
您没有初始化阵列(在第1行)并且指向未使用的内存.它应该是
NSMutableArray *numbersArray = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
你在做什么不同于指出nil哪个是安全的.如果你愿意的话
NSMutableArray *numbersArray = nil;
Run Code Online (Sandbox Code Playgroud)
你会看到数组总是空的,因为它发送的消息不会nil导致任何事情发生(例如添加对象nil根本不做任何事情).
你的代码运行正常.你可能只是没有得到它的功能.
您的前几行创建一个包含34个值的数组 -1
NSMutableArray *numbersArray = [[NSMutableArray alloc] init];
for (int i = 0; i<34; i++) {
numbersArray[i] = [NSNumber numberWithInt:-1];
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在0到33之间随机化一个积分值
int r = rand()%34;
Run Code Online (Sandbox Code Playgroud)
然后"while"所有-1的数组包含该数字,您随机化一个新数字.
由于你的第一个数字是正数,并且数组填充了所有-1,所以你永远不会进入循环体,所以你的代码只是跨过它.
while ([numbersArray containsObject:[NSNumber numberWithInt:r]]) { //it breaks here
r = rand()%34;
}
Run Code Online (Sandbox Code Playgroud)
我无法理解你想要做什么,但这正是你的代码目前正在做的事情.(虽然有效,但却毫无意义)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |