В настоящее время я пытаюсь написать класс для создания системы искусственных сеток, чтобы отслеживать NSMutableArray игровых объектов, используя NSMutableArray NSMutableArrays.Учитывая мой ограниченный опыт программирования на Objective-C, я не уверен в том, как работают определенные вещи.
Вот метод init:
#define MAX_BALL_ROWCOUNT 6
#define MAX_BALL_COLCOUNT 4
- (id) initWithMutableArray:(NSMutableArray *)aList {
self = [super init];
if (self != nil) {
ballList = [[NSMutableArray alloc] initWithCapacity: MAX_BALL_ROWCOUNT];
for (int i=0; i<MAX_BALL_ROWCOUNT; i++) {
NSMutableArray *balls = [[NSMutableArray alloc] initWithCapacity:MAX_BALL_COLCOUNT];
[ballList addObject:balls];
[balls release];
}
int x = 0;
for (NSMutableArray *array in ballList) {
for (int i = 0; i<MAX_BALL_COLCOUNT; i++) {
[array addObject:[aList objectAtIndex:x]];
x++;
}
}
}
return self;
}
ballList - это NSMutableArray класса, который будет хранить NSMutableArrays.
aList - это NSMutableArray, содержащий GameEntities, которые я хочу отслеживать, которые передаются в этот класс.
Все размеры и количество сущностей для хранения являются фиксированными, поэтому нетпроверяет размеры массивов и количество сущностей для хранения.
Итак, первый вопрос, который у меня есть, касается освобождения памяти.Это функция dealloc, которая у меня есть на данный момент:
- (void) dealloc {
[ballList release];
[super dealloc];
}
Вызывает ли выпуск релиза из ballList вызов релиза для содержащихся в нем NSMutableArrays (который впоследствии вызовет релиз для объектов, содержащихся в NSMutableArrays)или я должен написать что-то вроде:
for (NSMutableArray *array in ballList) {
[array release];
}
[ballList release];
Мой второй вопрос касается использования этого массива массивов.Это правильный путь для прохождения через ballList?
- (void) update {
for (NSMutableArray *array in ballList) {
for (GameEntity *balls in array) {
(CGPoint) location = [balls getLocation];
[balls setLocation: CGPointMake(location.x+1, location.y+1)];
}
}
}
Наконец, в приведенном выше коде, где он устанавливает местоположение шариков, он влияет только на содержимое в ballList или исходный aList, передаваемый в ballListизменить также?Если содержимое исходного списка aList не изменится, как бы я написал его так, чтобы они изменились?
Если у людей есть предложения по улучшению способа отслеживания сущностей в сетке, я быоткрыт для тех, кто тоже.Заранее спасибо.