Создает ли это объявление массив или NSString? - PullRequest
2 голосов
/ 09 июня 2011

Когда я читал, я увидел следующее:

static NSString *randomNounList[3];

делает ли это массив из NSString указателей с именем randomNouns?

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Да, это делает массив из 3 указателей на NSString, и вы можете свободно использовать его как обычный массив.

Просто помните, что в отличие от контейнеров Objective-C простые массивы не сохраняют свои элементы, и вы должны самостоятельно решать все проблемы с управлением памятью (например, сохранять строки, чтобы быть уверенными, что их не освободят преждевременно, и освободить их, когда вы этого не сделаете). нужно их).

1 голос
/ 09 июня 2011

Это не NSArray или NSString - это простой массив C-указателей на NSStrings. Это не объект; это просто блок памяти с местом для трех указателей.

Использование массива C с такими объектами Какао обычно (но не всегда) - плохая идея IMO. C-массивы достаточно проблематичны в простом C. Когда вы добавляете в более сложную семантику управления памятью Какао, может быть сложно управлять всем правильно, если вы не оборачиваете массив в NSArray-подобный интерфейс - и если вы делаете это, почему вы просто не используете NSArray?

...