我實施關於實現細節的效率的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時?
哪一個更好?線性數組還是數組?也就是說,在線性數組中進行生產/部門獲取/設置對象的速度更快,還是使用數組數組更快?
感謝