Tengo una pregunta relacionada con el diseño.¿por qué usar constantes de cadena frente a constantes enum?
que he visto que la clase UIApplication tiene este tipo de banderas:
UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification;
UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification;
y, por otro lado, la clase declara UITableView estructuras como:
typedef enum {
UITableViewScrollPositionNone,
UITableViewScrollPositionTop,
UITableViewScrollPositionMiddle,
UITableViewScrollPositionBottom
} UITableViewScrollPosition;
Uno es para notificaciones y el otro define tipos de objetos. Creo que esas dos son opciones de diseño para 'etiquetar' algunos objetos relacionados y hacer las sentencias en tiempo de ejecución en función de esa bandera.
Digamos que quiero crear una fábrica de objetos que necesitan ser etiquetados. En la imagen de abajo, quiero enumeraciones o identificaciones para cada sección y widget. ¿Cómo se comunicaría un widget o 'invocaría' a otro? e.j. [[Containter sharedInstance] presentWidget: ?? forSection: ?? withInfo: (id) información];
¿Existe una razón más profunda o más precisa que elegir uno de ellos? Gracias por su ayuda.
tenga en cuenta que la primera será una 'colección' de cadenas, donde la segunda será una selección de enteros (comenzando @ 0) – KevinDTimm
Junto con lo que dijo Kevin, no creo que pueda hacer una enumeración de cadenas. Los mensajes son geniales para agrupar etiquetas. En mi empresa, generalmente establecemos explícitamente los valores enum en caso de que decidamos eliminar un valor enum más adelante.Algunos códigos que persisten pueden usar el valor enum para indicar el estado; sin embargo, si carga una nueva versión de la aplicación y se elimina un valor, esto afectará a todos los valores en la enumeración a menos que se especifiquen explícitamente. – Sam
Una cosa que me viene a la mente es que, con cadenas de caracteres, no es necesario conocer la interfaz del objeto que recibirá estas cadenas. Con enumeraciones, cada objeto implicado conocería la interfaz de receptores ... ¿estoy en lo cierto? – chuckSaldana