Подтвердить что ты не робот

Как создать массив строк в Objective c для iphone

Я пытаюсь создать массив строк, которые могут быть рандомизированы и ограничены определенным числом строк.

Если бы массив мог быть рандомизирован, я мог бы выбрать первые строки x, и это будет нормально работать.

Я пытаюсь использовать код, подобный этому в настоящее время

NSString *statements[9];
statements[0] = @"hello";

Кажется, что это работает, но массив, похоже, полон мусорных данных.

Может кто-нибудь помочь мне в правильном направлении. (выполняется ли распределение памяти неправильным образом?

Спасибо

4b9b3361

Ответ 1

Вам нужен массив с девятью строками?

[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil]

Ответ 2

Как и в Xcode 4.4, вы можете использовать литералы Array, которые намного чище и легче читать. Вам больше не нужно включать "nil". Например:

NSArray *myArray = @[@"1", @"2", @"3", @"4", @"5"];

Ответ 3

Все автоматические массивы C, подобные этому, будут заполнены мусором, пока вы их не заполните. Пока он не заполняется мусором позже, все работает так, как ожидалось. Однако Cocoa включает класс NSArray, который более часто используется для массивов объектов (поскольку он правильно управляет памятью и работает с остальной частью фреймворка и все такое).

Ответ 4

Просто подсказка, не нужно перетасовывать содержимое массива. Просто рандомизируйте доступ. Для каждой карты, которую вы хотите выбрать из колоды, выберите случайное число и выберите карту по этому индексу. Затем возьмите верхнюю карту и поместите ее там, где вы только что выбрали карту.

Если вы действительно хотите отсортировать массив, вы можете сделать это с очень маленьким кодом, используя - sortedArrayUsingSelector:, где метод сравнения возвращает случайно NSOrderedAscending или NSOrderedDescending.