Я новичок в Obj-C, так что простите, если это глупый вопрос:
Как мне реализовать некоторые из них в стиле Javas enums? Или, если быть более точным:
Мне нужен класс с некоторыми известными свойствами, которые исправляются во время компиляции и уникальны для каждого экземпляра. Кроме того, я хочу только один тип экземпляра.
Позвольте мне привести пример на Java:
public enum MessageTypes {
DEFAULT("white", "standard", 1),
EXPRESS("red", "expressMessage", 2),
BORADCAST("green", "broadcast", 3);
String color; String tagName; int dbId;
MessageTypes(String color, String tagName, int dbId) {
// you get the idea
}
//some methonds like getEnumByTagName
}
Как бы вы сделали что-то подобное в Objective-C? Я что-то пропустил? Это вообще плохая картина?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Я извиняюсь, если я не прояснил себя. Я знаю, что перечисления obj-c - это не то, что я ищу (так как они лишь немного больше, чем typedef для int).
Я хотел бы создать набор (одноэлементных, неизменяемых) экземпляров определенного класса. Шаблон Singleton в Apples Dev-Docs бесполезен, так как мне нужно несколько отдельных экземпляров класса, каждый из которых имеет отдельные значения в своих свойствах.
Цель этого состоит в том, чтобы иметь несколько типов сообщений (около 20), которые можно назначить сообщению в качестве свойства. Каждый из моих типов сообщений имеет (фиксированный и предопределенный) цвет, значение атрибута (в XML-представлении) и числовой идентификатор.
В Java я использовал бы enum, как в моем примере кода. Но как мне создать разные типы сообщений и связать их с их свойствами в Obj-C?
Создание 20 подклассов типа MessageType (каждый с экземпляром-одиночкой, содержащим свойства) кажется большой работой для такой простой задачи и полного перерасхода.
Мой текущий подход заключается в создании класса с NSArray, содержащим разные экземпляры. При первом доступе к методу, подобному +(id)messageTypeForId:NSInteger id_
, NSArray предварительно заполнен. Но это кажется совершенно неуклюжим и совсем не элегантным ...
Есть ли более удовлетворительный подход?