2013-07-23 2 views
0

Мне часто приходится ссылаться на массив строк (скажем, имена команд) в нескольких местах. Содержимое этого массива не изменится.Могу ли я использовать собственный метод класса для NSArray для возврата константы?

Для этого я определил свой класс, MyConstants. В заголовке я определяю некоторые несвязанные постоянные строки и числа. В файле реализации я сделал класс singleton, а затем добавил метод класса arrayOfTeamNames.

Чтобы получить доступ к массиву, я использую [Constants arrayOfTeamNames].

I это приемлемо?

Я думал о том, как NSString и NSArray сами обрабатывают создание с помощью методов класса. Если, например, я хочу пустой массив, я могу использовать [NSArray array] - поэтому предположительно «массив» является методом класса в NSArray.

Таким образом, вместо моей реализации, следует ли использовать категорию для добавления '+ arrayOfTeamStrings' в NSArray вместо использования моего собственного класса?

Или, в качестве альтернативы, следует создать собственный подкласс NSArray и добавить туда метод класса?

В любом случае, мне нужно сделать класс одиноким? Или это не нужно?

+2

Кажется, что вы обдумали это, и если вы продолжаете беспокоиться об этом, у вас может быть стресс-атака. То, что у вас есть, кажется прекрасным, и если вы действительно беспокоитесь о чем-то еще, измените свою неизменяемую настройку массива когда-нибудь методом типа set setter. – rezand

ответ

0

В целом, для добавления методов класса к классам фундамента с помощью категорий может быть очень полезно. Но в этом случае я бы фактически придерживался arrayOfTeamNames, являющегося частью MyConstants. Тот факт, что имена команд являются NSArray, не так важен, как тот факт, что он является постоянным для вашего приложения.

Если значения, определенные в MyConstants, очень разнообразны и не связаны друг с другом, или если их только несколько, то я бы рассмотрел только вопрос об избавлении от MyConstants как класса и использовании категорий или даже просто внешних документов, например. extern NSArray * const BPAllTeamNames.

Смежные вопросы