Soy nuevo en Objective-C, pero tengo curiosidad sobre algo que realmente no he visto abordado en ningún otro lado.Variable de clase definida en @implementation en lugar de @interface?
Podría alguien decirme cuál es la diferencia entre una variable privada que se declara en el bloque @interface
frente a una variable que se declara dentro del bloque @implementation
exterior de los métodos de la clase, es decir:
@interface Someclass : NSObject {
NSString *forExample;
}
@end
vs.
@implementation Someclass
NSString *anotherExample;
-(void)methodsAndSuch {}
@end
parece ambas variables (forExample
, anotherExample
) son igualmente accesibles a lo largo de la clase y no puedo encontrar realmente una diferencia en su comportamiento. ¿La segunda forma también se llama una variable de instancia?
Esto es lo que sospechaba y su respuesta tiene mucho sentido, pero si Intento acceder a 'anotherExample' en cualquier otra clase (por incluyendo apropiadamente 'Someclass' en esas clases) el compilador me dice que esta variable no está declarada. ¿Lo que da? – bitcruncher
@bitcruncher porque 'anotherExample' es solo global para el archivo .m en el que se declaró. Si quiere que esté disponible para otros archivos, tendrá que declarar 'extern NSString * anotherExample;' en el archivo .h, luego '# import' the .h donde sea que necesite el global. Esto apesta a un olor a código, aunque tiene casos de usos válidos. –
no hay código real está oliendo :-) esto fue solo una pregunta exploratoria. – bitcruncher