Objective-C - Как реализовать массив указателей в объявлении метода - PullRequest
0 голосов
/ 14 июля 2009

Хорошо, если вы посмотрите на мои два предыдущих поста (в частности, ссылку № 2), я хотел бы задать дополнительный вопрос, касающийся того же кода. В объявлении метода я хочу определить один из параметров как указатель на массив указателей, которые указывают на feat_data. Я вроде в недоумении, куда идти и что делать, кроме как поместить (NSMutableArray *) featDataArray в объявление, как показано ниже, и получить доступ к каждому объекту через другой указатель типа feat_data. Кстати, извините, что задаю так много вопросов. Я не могу найти некоторые вещи, подобные этой, в книге, которую я использую, или, может быть, я смотрю не в том месте?

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

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

Ссылка № 1

Ссылка № 2

1 Ответ

3 голосов
/ 14 июля 2009

Ваша декларация выглядит нормально. «NSMutableArray *» - подходящий тип для вашего параметра. (Objective-C не имеет обобщений, поэтому вы ничего не можете объявить о том, что находится внутри массива.)

Одна проблема, которую я вижу в вашем коде, заключается в том, что вы выделяете объект без причины, а затем выбрасываете указатель (таким образом, происходит утечка памяти).

Я не знаю, что вы пытаетесь сделать, поэтому вот несколько вещей, которые вы можете сделать с 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...