Tengo una aplicación para iPhone con algunos colores personalizados para mi tema. Como estos colores se fijarán para mi UI, me gustaría definir los colores en una clase para incluir (Constantes.h y Constantes.m). ¿Cómo puedo hacer eso? (Simplemente definirlos no funciona porque los UIColors son mutables y causarían errores, Initalizer no es constante).Objetivo C que define las constantes UIColor
/* Constants.h */
extern UIColor *test;
/* Constants.m */
UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
Gracias!
-1 para la primera frase: el inicializador es lo que no es constante, no es la instancia. Para todos los efectos, UIColor podría (o podría mañana) contener variables de estado internas que no están expuestas al usuario, haciéndonos parecer constantes, sin embargo, no hay nada en Obj-C que lo fuerce. Por lo tanto, el compilador no puede usar un inicializador estático, como le gustaría, porque [UIColor colorWithRed: 1.0 verde: 1.0 azul: 1.0 alfa: 1.0] es una llamada a método, y por lo tanto los resultados de esto no se pueden poner en el segmento de texto, que se crea en tiempo de compilación. –
Mutable significa que puede cambiar la instancia. Inmutable significa que no puede cambiar la instancia. Constante significa que la instancia no se puede cambiar. Un UIColor no es mutable y tampoco constante. Solo CFString/NSString tiene instancias verdaderamente constantes porque el compilador las maneja especialmente como parte del lenguaje. – drawnonward
¿cómo hace referencia a este color en su código? – scientiffic