Tengo Constantes NSString, que quiero llamar como:
[newString isEqualToString:CONSTANT_STRING];
¿Algún código incorrecto aquí?
Recibí esta advertencia:
enviar 'const NSString *' al parámetro de tipo 'NSString *' descarta los calificadores
¿Cómo deben declararse?
objective-c
nsstring
warnings
constants
user4951
fuente
fuente

Respuestas:
Debe declarar su cadena constante de la siguiente manera:
en vez de:
El primero es un puntero constante a un
NSStringobjeto, mientras que el segundo es un puntero a unNSStringobjeto constante .El uso de le
NSString * constimpide reasignar kSomeConstantString para apuntar a unNSStringobjeto diferente .El método
isEqualToString:espera un argumento de tipoNSString *. Si pasa un puntero a una cadena constante (const NSString *), está pasando algo diferente de lo esperado.Además, los
NSStringobjetos ya son inmutables, por lo que hacerlos noconst NSStringtiene sentido.fuente
constcalificativo se aplica al término de su izquierda, y se aplica al término de su derecho sólo si no hay nada en su lado izquierdo (por ejemplo,const char *y unachar const *son punteros no const a const char, perochar *constes un puntero constante a Char no constante )solo para poner todo en un lugar que se encuentra en varias publicaciones en stackoverflow y funciona para mí, #define es malo porque no puede beneficiarse de los tipos de variables, básicamente el compilador reemplaza toda aparición cuando compila (importe Constants.h siempre que lo necesite):
fuente
dedica unos minutos para leer esto. Una buena lectura de punteros infierno en constantes y viceversa.
http://c-faq.com/decl/spiral.anderson.html
fuente