0

私の以前の 2 つの投稿 (特にリンク #2) をご覧いただければ、同じコードに関する追加の質問をしたいと思います。メソッド宣言で、パラメーターの 1 つを、feat_data を指すポインターの配列へのポインターとして定義したいと考えています。以下のように (NSMutableArray*)featDataArray を宣言に入れ、feat_data 型の別のポインタを介して各オブジェクトにアクセスする以外に、どこに行って何をすべきか迷っています。ところで、たくさんの質問をしてすみません。私が使用している本でこのようなもののいくつかを見つけることができませんか、それとも間違った場所を探しているのでしょうか?

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

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

リンク#1

リンク#2

4

1 に答える 1

3

あなたの宣言は問題ないようです。「NSMutableArray*」は、パラメーターに適したタイプです。(Objective-C にはジェネリックがないため、配列の内容については何も宣言できません。)

コードに見られる問題の 1 つは、理由もなくオブジェクトを割り当ててから、ポインターを破棄することです (したがって、メモリ リークが発生します)。

あなたが何をしようとしているのかわからないので、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
}
于 2009-07-14T05:29:27.400 に答える