2010-12-04 13 views
0

ich eine Unterklasse AObject von NSObject erstelltIst es möglich, die Membervariable des Objekts zuzugreifen

@interface AObject : NSObject { 
    NSinteger m; 
    NSInteger n; 
} 


-(void) setM:(NSInteger)v ; 
-(NSInteger) getM ; 
-(void) setN:(NSInteger)v ; 
-(NSInteger) getN ; 

m zuzugreifen, n, kann ich [myAObject GETM] oder [myAObject GetN]

Ist Es ist möglich, auf m, n mit tag oder auf eine andere Weise zuzugreifen, auf die ich auf alle Mitgliedsvariablen eines Objekts in einer Warteschlange zugreifen kann.

Willkommen jeder Kommentar.

Dank

InterDev

Antwort

2

Sie keine ganzen Zahlen Tag oder etwas zugreifen können; Sie müssen durch die Setter und Getters gehen, die Sie gemacht haben.

Wenn Sie auf jede dieser Mitgliedsvariablen zugreifen möchten, können Sie NSNumber anstelle von NSInteger verwenden und explizit ein Array erstellen, das diese Werte enthält. Um das zu tun, erklärt einen localVariables Array, und initialisieren Sie es in Ihrem Konstruktor, etwa so:

-(id) init { 
    if (self = [super init]) { 

     // initialize and set values for m and n 
     NSArray *array = [[NSArray alloc] initWithObjects:self.m, self.n, nil]; 
     self.localVariables = array; 
     [array release]; 
    } 
    return self; 
} 

Dann können Sie durch diese durchlaufen, um alle lokalen Variablen zugreifen.

By the way, können Sie kümmern sich um Getter und Setter nehmen

durch Zugabe
@property NSInteger m; 
@property NSInteger n; 

in Ihre Header-Datei, und

@synthesize m,n; 

zu Ihrer Implementierungsdatei.

+0

Danke. Meinst du es ist OK für NSNumber? – arachide

+0

@ user262325: Nein, NSInteger ist nur ein Typdef von 'int', während' NSNumber' eine Objective-C-Klasse ist, also muss es als Objekt verwaltet werden. @Sams Code wäre nicht genug, wenn Sie nur den Typ in 'NSNumber' geändert hätten. –

+0

Ich habe meine Antwort aktualisiert, um Ihnen zu zeigen, wie Sie ein Array von NSNumbers aufbewahren können, wenn Sie alle Locals an einer Stelle behalten möchten ... Sie müssen jedoch Ihre m und n zu NSNumber-Objekten ändern. –

Verwandte Themen