Si necesita acceder a name
desde fuera de los métodos MyClass
, debe definir los métodos para acceder a él. Simplemente podría escribir métodos llamados (NSString*) name
y - (void) setName:(NSString*) newName
, pero es más fácil definir propiedades y sintetizarlas.
En MyClass.h, defina una propiedad. Para las cadenas, por lo general los hacen copy
:
@interface MyClass : NSObject
@property (copy) NSString* name;
@end
En MyClass.m, todavía se utiliza su declaración de interfaz, con el Ivar:
@interface MyClass() {
NSString *name;
}
@end
Sin embargo, también es necesario para sintetizar su nueva propiedad. Esto crea métodos para la recuperación y configuración nombre:
@implementation MyClass
@synthesize name = name;
@end
Como convención, es común poner un guión al principio o al final de la Ivar, por lo que en la interfaz que tendría NSString *_name;
, y en el implementación tendría @synthesize name = _name
. Esto ayuda a evitar el uso accidental del ivar cuando se refería a la propiedad.
ahora puede acceder a su nombre propiedad:
MyClass me = [[[MyClass alloc] init] autorelease];
[me setName:@"My name"];
NSLog(@"Name = %@", [me name]);
propiedades de Objective-C son una potente característica de la lengua, pero tienen algunas peculiaridades que usted debe aprender. Intente buscar en la web alguna combinación de "objetivo-C", "propiedades" y "sintetizar".
Si aún tiene errores de compilación, edite su pregunta con la parte de su código donde tiene acceso al name
.
OP pregunta cómo acceder a la variable en el depurador. No cómo hacer para compilar. Tengo el mismo problema. Esta respuesta no es útil. – rrrus