我实施关于实现细节的效率的2D阵列和关注,2D阵列接口应该提供两个基本方法:ObjC二维数组:阵列vs线性阵列vs C数组?
(假设该阵列被固定的大小,指定在创建,所以没有动态尺寸变化)
getObjectAtRow:柱:
setObjectAtRow:柱:
enumerateUsingBlock:^(ID OBJ,NSUIntegerř流,NSUInteger柱,BOOL *停止)
实现:
阵列的阵列(NSMutableArray的)
具有大小rowCount
的一个NSMutableArray并在它的每个元素是大小的一个NSMutableArray columnCount
,那么getter将获得行数组,然后从行数组获取指定列的对象,setter将使用相同的技术。枚举器使用两个枚举块,一个用于遍历行数组,另一个用于每个行数组,另一个枚举器用于所有对象。
线性阵列(NSMutableArray的)
只具有实际的对象,获取和设置使用将计算指数的一个NSMutableArray:
指数=行* +信息columnCount柱;
枚举穿过线性阵列,并且通过计算行&柱:
行=索引/信息columnCount 柱=指数%信息columnCount
数组c(假设元件是结构不类对象和大小预定义)
,所以我必须:
MyStruct elements[ROW_COUNT][COLUMN_COUNT]
然后用它在通常的C方式的getter/setter是刚开/设置:
elements[row][column]
和枚举只用两个for循环
我的顾虑:
这一个更有效率?我觉得C数组听起来更有效率,但是对于内存管理有些困难,尤其是在使用ARC时?
哪一个更好?线性数组还是数组?也就是说,在线性数组中进行生产/部门获取/设置对象的速度更快,还是使用数组数组更快?
感谢