Как вставить строки в NSArray и вернуть их позже для печати или сравнения?

Я пытаюсь создать NSMutableArray размером 100, а затем заполнить каждый индекс строкой из трех пробелов, " ". Я либо неправильно создаю массив, либо неправильно возвращаю объекты. Вот мой метод, который создает массив:

-(void) initBoard{
    _board = [board initWithCapacity:100];
    for(int i =0; i < 100; i++){
        [_board addObject:@"   "];
    }
}

Этот метод не работает должным образом. Я добавил цикл for после того, что выше, который содержал NSLog @"@%", [_board objectAtIndex: i];, чтобы я мог убедиться, что на самом деле есть строки, состоящие из трех пробелов в каждом индексе, но все, что он выведет в консоли, будет «nil». До сих пор я пробовал:

  • Я подумал, что, возможно, проблема была в addObjectAtIndex, поэтому я просто изменил его на addObject и изменил initWithCapacity только на init];, чтобы позволить циклу for построить массив до размера 100.

  • Затем я подумал, что, возможно, проблема заключалась в попытке вставить литеральную строку @" " (IDK, как заставить Stackoverflow отображать мои 3 пробела, а не только 1), поэтому я добавил NSString *input = @" "; прямо перед циклом for, а затем изменил [_board addObject:@" "]; на `[ _board addObject: ввод;

Любые предложения о том, как на самом деле создать NSMutableArray размером 100 и сделать так, чтобы каждое место содержало одну и ту же строку из трех пробелов?


person ChrisWilson4    schedule 28.02.2013    source источник
comment
Вы почти наверняка не смогли выделить массив.   -  person Hot Licks    schedule 28.02.2013
comment
Я думал, что у меня есть оператор alloc в моем файле .h. Это не так. Меня смущает файл .h, и я не понимаю, когда вы НЕ будете использовать alloc, почему это просто не сделать по умолчанию?   -  person ChrisWilson4    schedule 28.02.2013
comment
Я никогда не видел alloc в файле .h. alloc — это процедура, и вы никогда не вызываете процедуры в стандартном файле .h. Кроме того, в Objective-C вы должны всегда иметь alloc и init... вместе, если только вы на самом деле не понимаете, что делаете, и полностью понимаете последствия этого.   -  person Hot Licks    schedule 28.02.2013
comment
Если вы этого не понимаете, вам, вероятно, нужно вернуться и сначала изучить C. Затем найдите хорошую книгу по Objective-C — не пытайтесь понять это на примерах.   -  person Hot Licks    schedule 28.02.2013


Ответы (1)


Вам нужно allocate, а затем initialize изменяемый массив:

-(void) initBoard{
    _board = [[NSMutableArray alloc] initWithCapacity:100];
    for(int i =0; i < 100; i++){
        [_board addObject:@"   "];
    }
}
person Anoop Vaidya    schedule 28.02.2013