2012-06-16 2 views
0

У меня есть приложение iOS, которое использует число перечислений для допустимых значений, в основном, поскольку я использую некоторые таблицы перехода состояния с целым числом, но также позволяет использовать более низкое использование памяти и возможность индексирования в SQLite, что я используя для бэкэнда.Синглтон или класс полезности?

У меня есть все перечисления в общем файле .h, который включен в число классов, которые создают переменные на основе типа перечисления. У меня также есть несколько методов, которые используются во многих классах. Некоторые из них переводят перечисления обратно в строки, причем typedef и (человеческий) язык являются параметрами.

Одно из определений типов ниже:

typedef enum { 
    Ben, 
    Sen, 
    O, 
    Biz, 
    Siz, 
    Onlar 
} pronoun_typedef; 

Есть еще один набор методов, в основном манипуляции строки, которые кормят несколько параметров и возвращают NSString* или NSMutableString*.

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

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

Я знаю, что это аналогичный вопрос для этого и некоторых других, но я не чувствовал, что это было окончательно отреагировано, поэтому я подумал, что снова попрошу. Singleton and Static Utility classes

+0

По ссылке, которую вы указали, ответ от roberttdev был более точным. – user523234

+0

Он говорит: _Static Утилита используется, когда у вас есть класс, который является просто служебными функциями без состояния. Он не поддерживает состояние. Экземпляр объекта никогда не создается. Как вы можете ссылаться на методы, если нет экземпляра-объекта? – ardochhigh

ответ

1

Если методы утилиты не нуждаются в ссылке на self, я бы сделал их функциями C, определенными в том же модуле, что и константы. Вам нужен файл .h с константными определениями и объявлениями функций (прототипы) и .c файлом с определенными функциями.

Если это должен быть объект, используйте одноэлементный режим, если один экземпляр имеет смысл, и несколько экземпляров, если каждому нужна отдельная независимая копия внутренних данных/состояния.

+0

C функции. Интересно, я не считал этот угол. Это будет иметь смысл для некоторых из них. У других есть некоторые объекты. Спасибо за совет. – ardochhigh

+0

Вы можете манипулировать объектами-C в функции C как линг, поскольку заголовки, определяющие указанные объекты, импортируются. Я не уверен, что файл, содержащий тело функции C, должен быть .m или может быть .c. Если вы хотите управлять NSStrings, вам понадобится Foundation по крайней мере. –

+0

В любом случае, держите его простым. Не определяйте класс, если все, что вам нужно, это функции. Чем меньше беспорядков, тем проще, чем меньше головных болей по дороге! –

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