2013-11-28 2 views
-1

Почему я получаю сообщение об ошибке на линии NSLog(@"%@", numbers[i]);?Тема 1: signal sigabrt error

#import <Foundation/Foundation.h> 

int main(int argc, const char * argv[]) 
{ 

@autoreleasepool { 

    NSMutableArray *numbers = [NSMutableArray array]; 
    int i; 

    //Create an arry with the number 0-9 

    for (i = 0; i < 10; ++i) { 
     numbers[i] = @(i); 

     //Sequence through the array and display the values 

     for (i = 0; i < 10; ++i) { 
      NSLog(@"%@", numbers[i]); 

      //Look how NSLog can display it with a singe %@ format 

      NSLog(@"====== Using a single NSLog"); 
      NSLog(@"%@", numbers); 
     } 
    } 

} 
return 0; 
} 
+0

Это, конечно, не Xcode вопрос. –

+1

Кроме того, вы можете ** читать ** сообщение об ошибке (всего) - проблема в том, что вы получаете доступ к массиву за пределами границ. –

+0

Если вы простите это наблюдение, я рад, что вы получили ответ на свой вопрос, но в будущем, если вы опубликуете вопрос об ошибке или сбое, обязательно опубликуйте полное сообщение об ошибке и трассировку стека. См. [My App Crashed, Now What?] (Http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1). – Rob

ответ

0

Вы получили исключение, потому что у вас есть ваша две for петли вложенные, а внутренняя пытаются перебрать десять значений в массиве numbers, но при попытке сделать это, прежде чем вы сделали заполнение массива во внешнем цикле.

Я полагаю, вы не хотите, чтобы эти for петли вложенными:

NSMutableArray *numbers = [NSMutableArray array]; 
int i; 

//Create an array with the number 0-9 

for (i = 0; i < 10; ++i) 
    numbers[i] = @(i); 

//Sequence through the array and display the values 

for (i = 0; i < 10; ++i) 
    NSLog(@"%@", numbers[i]); 

//Look how NSLog can display it with a single %@ format 

NSLog(@"====== Using a single NSLog"); 
NSLog(@"%@", numbers);