我正在尝试提高应用程序的性能,我想从我正在使用的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)
答案 0 :(得分:2)
您需要更多*
秒。将数组指针声明为:
MyObject **myObjectArray;
然后像这样初始化它:
myObjectArray = (MyObject**) malloc(numberOfObjects * sizeof(MyObject *));
将代码中的所有其他内容保留为现在的相同内容,您应该保持良好状态!为什么要从NSMutableArray
更改?它在灵活性和Cocoa支持方面比C阵列更强大。
答案 1 :(得分:0)
你真的相信你会提高表现吗? NSMutableArray已经存在了很长时间,并且在为新元素分配更多内存方面可能比此时更智能。
现在,如果您正在创建链接列表或其他内容,那么可以为中间插入等内容带来好处...但是对于只有一个普通数组,您可以添加,我不知道你有多大的收益会看到。