objective functions objective-c constants

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;