Как создать массив строк в Objective c для iPhone - PullRequest
30 голосов
/ 21 октября 2009

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

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

Я сейчас пытаюсь использовать такой код

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

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

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

Спасибо

Ответы [ 4 ]

67 голосов
/ 21 октября 2009

Хотите массив с девятью строками?

[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil]
53 голосов
/ 04 ноября 2012

Начиная с Xcode 4.4, вы можете использовать литералы массивов, которые намного чище и проще для чтения. Вам больше не нужно включать «ноль». Например:

NSArray *myArray = @[@"1", @"2", @"3", @"4", @"5"];
2 голосов
/ 21 октября 2009

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

1 голос
/ 22 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...