2009-07-14 4 views
0

Ok, wenn Sie sich meine beiden vorherigen Posts ansehen (Link # 2 im Besonderen), möchte ich eine zusätzliche Frage dazu stellen Code. In einer Methodendeklaration möchte ich einen der Parameter als Zeiger auf ein Array von Zeigern definieren, die auf feat_data zeigen. Ich bin irgendwie nicht in der Lage zu gehen und was zu tun, außer zu setzen (NSMutableArray *) featDataArray in der Deklaration wie unten und Zugriff auf jedes Objekt über einen anderen Zeiger von feat_data Typ. Übrigens, tut mir leid, so viele Fragen zu stellen. Ich kann einige der Dinge in dem Buch nicht finden, das ich benutze, oder vielleicht suche ich an der falschen Stelle?Objective-C - Wie man ein Array von Zeigern in einer Methodendeklaration implementiert

-(void)someName:(NSMutableArray*)featDataArray; 

feat_data *featDataPtr = [[feat_data alloc] init]; 
featDataPtr = [featDataArray objectAtIndex:0]; 

Link #1

Link #2

Antwort

3

Ihre Erklärung sieht gut aus. "NSMutableArray *" ist ein geeigneter Typ für Ihren Parameter. (Objective-C hat keine Generika, sodass Sie nichts über das Array deklarieren können.)

Ein Problem in Ihrem Code ist, dass Sie ein Objekt ohne Grund zuweisen und dann den Zeiger wegwerfen (also undichte Speicher).

Ich weiß nicht, was es ist, dass Sie versuchen zu tun, so sind hier einige Dinge, die Sie mit einem NSMutableArray tun können:

- (void)someName:(NSMutableArray *)featDataArray { 

    feat_data *featDataPtr = [[feat_data alloc] init]; 
    [featDataArray addObject:featDataPtr]; // add an object to the end 
    [featDataPtr release]; 

    feat_data *featDataPtr2 = [[feat_data alloc] init]; 
    [featDataArray replaceObjectAtIndex:0 withObject:featDataPtr2]; // replace an existing entry 
    [featDataPtr2 release]; 

    feat_data *featDataPtr3 = [featDataArray objectAtIndex:0]; // get the element at a certain index 
    // do stuff with featDataPtr3 
} 
+0

Ah ok, danke. Ich habe für eine Sekunde nicht gesehen, worüber du geredet hast, aber jetzt tue ich es. –

Verwandte Themen