Estoy intentando que una constante NSString en mi archivo .h se defina en mi .m. Entiendo que
extern NSString * const variableName;
en .h y
NSString * const variableName = @"variableValue";
es la manera de hacerlo. Al examinar c tutoriales, veo que se supone que const
va antes de las definiciones de variables. Mi pregunta es por qué no está declarado como extern const NSString * variableName;
en .h y const NSString * variableName = @"variableValue";
en .m. Sé que esto no funciona porque me encuentro con advertencias de compilación que dicen 'Pasar el argumento 1 de methodName: descarta los calificadores del tipo de destino del puntero'. ¿Qué significa esto?Objetivo C const NSString * vs NSString * const
Respuesta
No es lo mismo. El modificador const se puede aplicar al valor, o al puntero al valor.
int * const
Un puntero constante (no modificable) para un número entero (su valor puede ser modificado)
const int *
Un puntero modificable a un número entero constante (su valor no puede ser modificado)
que usted pueda imaginar:
const int * const;
puntero constante no es un puntero a constante. Puntero constante significa que el puntero es constante. P.ej. el puntero constante int * const ptr2;
indica que ptr2
es un puntero que es constante. Esto significa que ptr2
no se puede hacer que apunte a otro entero. Sin embargo, el entero apuntado por ptr2
se puede cambiar.
Mientras que un puntero a constante const int * ptr1;
indica que ptr1
es un puntero que apunta a un número entero constante. El número entero es constante y no se puede cambiar. Sin embargo, el puntero ptr1
se puede hacer que apunte a otro entero.
- 1. nsstring y const char * conversión
- 2. Const const char * string a NSString con longitud Y codificación
- 3. const vs new const
- 4. semántica C++ de `const` estática vs` const`
- 5. Const vs Static Const
- 6. "extern const" vs "extern" only
- 7. const vs NSStrings estáticos en Objective-C
- 8. referencia a un NSString * static const de otra clase
- 9. convertir const char * a NSString * y convertir de nuevo - _NSAutoreleaseNoPool()
- 10. Objetivo-c: NSString es posible enumerar los
- 11. Objetivo C ==> unichar [] a NSString?
- 12. Objetivo C: convertir un NSMutableString en NSString
- 13. Objetivo C Convert int a NSString (iPhone)
- 14. const char * miVar vs const char miVar []
- 15. const string vs. #define
- 16. NSString: isEqual vs. isEqualToString
- 17. NSClassFromString() vs classNamed: (NSString *)
- 18. Corrección de const: const char const * const GetName const (// stuff);
- 19. PHP5: const vs static
- 20. estática const vs #define
- 21. int vs const int &
- 22. const y no const methods in C++?
- 23. C++: Significado de const char * const *
- 24. stringWithFormat vs initWithFormat en NSString
- 25. const vs enum en D
- 26. función virtual const vs función virtual no const
- 27. Objetivo C: ¿Reemplazar parte de la cadena en NSString?
- 28. objetivo de conversión para c NSString a NSDecimalNumber
- 29. Objetivo C NSString * propiedad de retener rareza recuento
- 30. const int vs const int como parámetro de la función en C++ y C
Para ampliar eso, si no se trata de un puntero, 'const int' y' int const' son exactamente iguales. 'NSString's ya son inmutables, por lo que la const solo debe aplicarse al puntero (lo que puede ser un poco confuso ya que los objetos Objective-C siempre se acceden a través de punteros). – Wevah
@Macmade ¿por qué no explicaste esto en términos de NSString ya que la sintaxis es diferente de todos modos con el puntero? – jpswain
Para ampliar eso, 'const int *' y 'int const *' son lo mismo, pero 'int * const' es diferente. – user102008