Я занимаюсь разработкой на iPhone и что-то упускаю из-за сохранения объектов в NSMutableArray - что я делаю неправильно и как мне к этому подойти?
Соответствующие разделы кода:
У меня есть объект Entity, который наследуется непосредственно от NSObject. В моем классе GLView я хочу определить массив этих - так GLView.h
@interface GLView : UIView
{
BOOL controllerSetup;
// Entity etc - first development task it to get one up
NSMutableArray *arrEntities;
}
@property(nonatomic, assign) NSMutableArray *arrEntities;
и в теле функции drawView, которая вызывается событием таймера несколько раз, я выделяю массив и, для начальной разработки, только один объект Entity и добавляю его в массив
- (void)drawView
{
if(!controllerSetup) { // initialize on first call
[controller setupView:self];
controllerSetup = YES;
arrEntities = [NSMutableArray array];
Entity* thisEntity = [[Entity alloc] initEntity];
[arrEntities addObject:thisEntity];
}
Entity *entity = [arrEntities objectAtIndex:0];
[entity tickEntity:0.1];
}
Насколько я понимаю, при первом вызове drawView
будет установлен NSMutableArray и к нему будет добавлен экземпляр Entity, затем в теле указатель на первую копию объекта, сохраненную в извлеченном массиве, и этим манипулируют (очевидно, я собираюсь добавить еще и зациклить их позже).
Однако что происходит, когда при первом вызове процедуры все работает нормально, objectAtIndex
получает указатель сущности и все работает. Однако при втором вызове, когда значение controllerSetup
истинно, а условие инициализации не выполнено, arrEntities
пусто, и программа вылетает, когда objectAtIndex
возвращает ноль.
Так что я делаю не так? Почему мой сохраненный объект Entity не сохраняется в NSMutableArray?