Se è necessario accedere a name
dall'esterno dei metodi MyClass
, è necessario definire i metodi per accedervi. Potresti semplicemente scrivere i metodi chiamati (NSString*) name
e - (void) setName:(NSString*) newName
, ma è più semplice definire le proprietà e sintetizzarle.
In MyClass.h, si definisce una proprietà. Per le stringhe, di solito farli copy
:
@interface MyClass : NSObject
@property (copy) NSString* name;
@end
In MyClass.m, si utilizza ancora la vostra dichiarazione di interfaccia, con l'ivar:
@interface MyClass() {
NSString *name;
}
@end
Tuttavia, è anche bisogno di sintetizzare la tua nuova proprietà. Questo crea metodi per recuperare e impostare nome:
@implementation MyClass
@synthesize name = name;
@end
Per convenzione, è comune a mettere un carattere di sottolineatura all'inizio o alla fine del Ivar, in modo nell'interfaccia si avrebbe NSString *_name;
, e nel implementazione si avrebbe @synthesize name = _name
. Questo aiuta ad evitare di usare accidentalmente l'ivar quando intendi la proprietà.
è ora possibile accedere il tuo nome proprietà:
MyClass me = [[[MyClass alloc] init] autorelease];
[me setName:@"My name"];
NSLog(@"Name = %@", [me name]);
proprietà Objective-C sono una potente funzione della lingua, ma hanno alcune stranezze si deve imparare. Prova una ricerca sul web per una combinazione di "oggettivo C", "proprietà" e "sintetizza".
Se si verificano ancora errori del compilatore, modificare la domanda con la parte del codice a cui si accede name
.
L'OP chiede come accedere alla variabile nel debugger. Non come farlo compilare. Ho lo stesso problema. Questa risposta non è utile. – rrrus