У меня есть следующий метод:
-(void)testAPIModule {
self.requests = [NSMutableArray array];
NSLog(@"making arrays");
/*(A)*/ id array1 = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithFloat:2], nil];
/*(B)*/ id array2 = [NSArray arrayWithObjects:[NSNumber numberWithInt:4], [NSNumber numberWithInt:5]];
NSLog(@"made array=%@",array2);
for( ServerRequest *req in self.requests ) {
[Networker sendRequest:req withDelegate:self];
[req release];
}
}
Код работает как положено.
Однако, если я закомментирую строку (A) ИЛИ удалим «, nil» в конце, я получу ошибку EXC_BAD_ACCESS
в строке (B)! Согласно отладчику, ошибка возникает в CFRetain во встроенном конструкторе + [NSArray arrayWithObjects].
Кроме того, если я закомментирую строку (A) и закомментирую цикл for (...), код выполняется через метод.
Это очень неожиданно для меня. Что я делаю не так в строке (B)? И почему создание совершенно другого массива в строке (A) позволяет методу проходить? И почему комментирование цикла for (...) предотвращает ошибку в строке (B) перед ней?
Может кто-нибудь объяснить, почему это так? Или, по крайней мере, дать мне несколько советов по отладке? Я уже проверил, что метод работает только один раз, и что «self» допустимо.