Я пытаюсь настроить простой движок 2D-плиток на основе Mac, используя 2D NSMutableArray для картографирования.Я использую подкласс NSViewController со ссылкой на объект карты (который содержит указанный массив) и передаю запросы рисования для данных тайла через него на карту в интересах поддержания целостности MVC.Однако мое приложение, похоже, не заполняет массив объектами до того, как мой код drawRect начинает срабатывать.
Каждый раз, когда я запускаю это приложение, как написано, мое окно не загружается, и я получаю сообщение об ошибке "- [__ NSArrayMobjectAtIndex:]: индекс 0 за пределами пустого массива "в отладчике.Насколько я могу судить, мой массив должен быть полностью инициализирован нулями до того, как представление будет фактически отображено или должно быть нарисовано.
Вот метод -loadView из моего подкласса NSViewController:
- (void)loadView
{
currentMap = [[TestMap alloc] init];
[super loadView];
}
и вот метод init из моего объекта карты:
- (id)init
{
dimensions = NSMakeSize(15.0,20.0);
tileset = [[TestTileset alloc] init];
map = [NSMutableArray arrayWithCapacity:15];
for (int i = 0; i == 14; i++)
{
NSMutableArray *tempRow = [NSMutableArray arrayWithCapacity:20];
for (int j = 0; j == 19; i++)
{
NSNumber *tempID = [NSNumber numberWithInt:0];
[tempRow addObject:tempID];
}
[map addObject:tempRow];
}
return self;
}
Разумное использование точек останова показало, что
[super loadView]
каким-то образом вызывается до того, как init начинает свои циклы for -и, очевидно, мой код drawRect, который должен ссылаться на массив, следует оттуда и быстро терпит неудачу.Должно быть, я что-то делаю не так или не в порядке, но не могу понять, что это может быть.