У меня есть небольшая проблема с ARC, и я понимаю, почему она делает то, что делает, но не как ее предотвратить. Этот код является частью образца игры "Tick Tac Toe".
Проблема заключается в выделении нового UIView
внутри цикла, подкласса которого называется Tile
. После настройки я добавлю Tile
(UIView
) к текущему представлению и добавлю его в массив плиток gamecontroller, который позже будет использоваться для справки.
Теперь проблема в том, что при каждой итерации цикла объекты-плитки автоматически освобождаются, и я хочу, чтобы они сохранялись, чтобы я мог сохранить их в контейнере плиток игрового контроллера. Как мне заставить его вспомнить плитки?
Это код в игре Delegate:
- (void) addTile:(Tile *)tile {
NSLog(@"Add tile %@", self.tiles);
[tiles addObject:tile];
}
Вывод последнего добавления здесь:
Размещено на pastebin.com для лучшего форматирования
В этот момент, как и ожидалось, будет выведен весь локальный массив плиток внутри игрового контроллера, и это как и ожидалось; есть список с объектами Tile.
Новая ссылка для скачивания
Это код в board.m
(подкласс UIView
).
-(void) drawBoard
{
NSLog(@"Drawboard called");
for (int j =0; j < 3; j++) {
for (int i = 0; i < 3; i++) {
CGRect frame = CGRectMake(tilex, tiley, hlineDistance-1, vlineDistance-1);
Tile* tile = [[Tile alloc] initWithFrame:frame];
[self addSubview:tile];
// ...
[self.gameDelegate addTile:tile];
}
// ...
}
// ...
}