如何在Objective-C中动态分配指向对象的数组?

时间:2010-02-22 03:58:18

标签: iphone objective-c

我正在尝试提高应用程序的性能,我想从我正在使用的NSMutableArray更改为动态分配的C数组。

作为测试,我创建了这个类:

在我的课程界面中,我有:

MyObject *myObjectArray;

在我的实现中,在初始化对象之后,我有另一种方法来设置数组:

-(void) createObjectsWithNumberOfObjects:(int)numberOfObjects
{
    MyObject *tempObject = nil;
    myObjectArray = (MyObject*) malloc(numberOfObjects * sizeof(tempObject));
    for( int i = 0; i < numberOfObjects; i++ )
        tempObject = [[MyObject alloc] init];
        myObjectArray[i] = (MyObject*) tempObject; // error
    }
}

我收到的错误是: 分配中的不兼容类型

那么我做错了什么?

是否可以使用动态分配的对象数组?

另外,在我的dealloc方法中,我设置为在每个对象上调用release然后释放(myObjectArray)

2 个答案:

答案 0 :(得分:2)

您需要更多*秒。将数组指针声明为:

MyObject **myObjectArray;

然后像这样初始化它:

myObjectArray = (MyObject**) malloc(numberOfObjects * sizeof(MyObject *));

将代码中的所有其他内容保留为现在的相同内容,您应该保持良好状态!为什么要从NSMutableArray更改?它在灵活性和Cocoa支持方面比C阵列更强大。

答案 1 :(得分:0)

你真的相信你会提高表现吗? NSMutableArray已经存在了很长时间,并且在为新元素分配更多内存方面可能比此时更智能。

现在,如果您正在创建链接列表或其他内容,那么可以为中间插入等内容带来好处...但是对于只有一个普通数组,您可以添加,我不知道你有多大的收益会看到。