Domanda

Ok, se si dà un'occhiata ai miei due post precedenti (link # 2 in particolare), vorrei fare una domanda aggiuntiva appartenenti allo stesso codice. In una dichiarazione di metodo, Sono voler definire uno dei parametri come un puntatore a un array di puntatori, che indicano feat_data. Sono una specie di in perdita di dove andare e cosa fare se non mettere (NSMutableArray *) featDataArray nella dichiarazione come qui sotto e accedere a ogni oggetto attraverso un altro puntatore di tipo feat_data. A proposito, mi dispiace da tante domande. Non riesco a trovare alcune delle cose come questa nel libro che sto usando o forse sto cercando nel posto sbagliato?

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

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

link # 1

link # 2

È stato utile?

Soluzione

La vostra dichiarazione osserva benissimo. "NSMutableArray *" è un tipo appropriato per il parametro. (Objective-C non ha farmaci generici in modo non è possibile dichiarare nulla di quello che c'è dentro la matrice.)

Un problema che vedo nel codice è che si alloca un oggetto senza motivo e poi buttare via il puntatore (che perde così la memoria).

Non so che cosa è che si sta cercando di fare, per cui qui sono alcune cose che si possono fare con un NSMutableArray:

- (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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top