functions - Objective C const NSString*vs NSString*const
objective c functions (2)
El puntero constante NO es un puntero a constante. El puntero constante significa que el puntero es constante. Ej. Puntero constante int * const ptr2;
indica que ptr2
es un puntero que es constante. Esto significa que no se puede hacer que ptr2
apunte a otro entero. Sin embargo, el entero señalado por ptr2
se puede cambiar.
Mientras que un puntero a constante const int * ptr1;
indica que ptr1
es un puntero que apunta a un entero constante. El entero es constante y no se puede cambiar. Sin embargo, se puede hacer que el puntero ptr1
apunte a algún otro entero.
Estoy intentando que una constante NSString en mi archivo .h se defina en mi .m. Entiendo que
extern NSString * const variableName;
en el .h y
NSString * const variableName = @"variableValue";
Es la manera de hacer esto. Al examinar c tutoriales veo que se supone que const
debe ir antes que las definiciones de variables. Mi pregunta es por qué no se declara como extern const NSString * variableName;
en el .h y const NSString * variableName = @"variableValue";
en ellos. Sé que esto no funciona porque encuentro advertencias del compilador que dicen ''Pasando el argumento 1 de methodName: descarta los calificadores del tipo de destino del puntero''. ¿Qué significa esto?
No es lo mismo. El modificador const se puede aplicar al valor o el puntero al valor.
int * const
Un puntero constante (no modificable) a un entero (su valor puede ser modificado)
const int *
Un puntero modificable a un entero constante (su valor no se puede modificar)
Así que puedes imaginar:
const int * const;