【问题标题】:Objective-C - How to implement an array of pointers in a method declarationObjective-C - 如何在方法声明中实现指针数组
【发布时间】:2009-07-14 04:34:29
【问题描述】:

好的,如果您看一下我之前的两篇文章(特别是链接 #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

【问题讨论】:

    标签: objective-c pointers nsmutablearray method-declaration


    【解决方案1】:

    您的声明看起来不错。 “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
    }
    

    【讨论】:

    • 好的,谢谢。我一秒钟没看到你在说什么,但现在我明白了。
    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多