我認爲你正在尋找的解決方案是更有效地使用類。我現在有一個遊戲,玩家必須在4個「走廊」管理活動,每個走廊由3個「行」組成,每行包含各種壞人,好人等等。您通過滑動在走廊上循環,每次只能看到1個走廊,因此每個走廊都是自己的走廊。管理散佈在走廊上的壞人的噩夢是一場噩夢,並且效率非常低,所以我需要一種很好的方式將壞人分成幾組,而在主要功能中沒有大量的硬編碼數組......這就是我做了它:
在「自我」裏面有4個大廳hud層,每個大廳裏面有3行是NSMutableArrays,每行內部有少數代表演員類型的數組(好人,壞人,碎片等) 。
在嵌套數組中可以使用所有這些。例如:
NSMutableArray *badGuys;
NSMutableArray *goodGuys;
NSMutableArray *row1 = [NSMutableArray arrayWithObjects: badGuys, goodGuys];
(repeat for row2, row3)
NSMutableArray *hallWay1 = [NSMutableArray arrayWithObjects: row1, row2, row3];
NSMutableArray *mainGame = [NSMutableArray arrayWithObjects: hallway1, hallway2....
但是,這需要很多明確定義的變量。更簡潔的方法是使用類。
RowClass.h/RowClass.m 在.H:
NSMutableArray *myGoodGuys;
NSMutableArray *myBadGuys;
然後在.M使
-(NSMutableArray *) returnMyGoodGuys { return myGoodGuys };
HallwayClass.h/HallwayClass.m
RowClass *myRow1 = [[RowClass init] alloc];
RowClass *myRow2 = [[RowClass init] alloc];
RowClass *myRow3 = [[RowClass init] alloc];
NSMutableArray *allMyRows = [NSMutableArray arrayWithObjects: myRow1, myRow2, myRow3];
在裏面 。L:
- (NSMutableArray *) getRowNumber : (int)rowNumber { return allMyRows[rowNumber-1]; }
HallwayClass *hall1 = [[HallwayClass init] alloc];
這樣的話,當你需要拔出好人在一定走廊
NSMutableArray *hall1row1GoodGuys = [[hall1 getRowNumber:1] returnMyGoodGuys];
做一些數組
[hall1row1GoodGuys retain];
另外,如果你要處理它在foreach循環中:
foreach(RowClass *row in hallway1.allMyRows)
{
do stuff
}
或
for(i=0; i<4; i++)
{
RowClass *nextRow = hallway1.allMyRows[i];
stuff
}
定義類嚇壞了我的時間最長,但它們實際上是相當容易,如果你不overthink它,並做組織的東西奇觀工作。
希望你能從這一些中得到一些想法:3
完美。這符合我的想法。您如何看待使用smart_ptrs來存儲數組等? – Jason