Objective-C - 如何在方法声明中实现指针数组

时间:2009-07-14 04:34:29

标签: objective-c pointers nsmutablearray method-declaration

好的,如果你看一下我以前的两篇文章(特别是Link#2),我想问一个关于相同代码的其他问题。在方法声明中,我想将其中一个参数定义为指向指针数组的指针,指向feat_data。除了在下面的声明中放入(NSMutableArray *)featDataArray并通过另一个feat_data类型的指针访问每个对象之外,我有点不知所措。顺便说一句,很抱歉要问这么多问题。在我正在使用的书中找不到这样的东西,或者我在寻找错误的地方?

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

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

Link #1

Link #2

1 个答案:

答案 0 :(得分:3)

你的声明看起来很好。 “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
}