【发布时间】:2012-03-16 08:17:36
【问题描述】:
我对 ARC 有一个小问题,我理解它为什么会这样做,但不知道如何防止它。此代码是示例“Tick tac toe”游戏的一部分。
问题是在一个名为Tile 的子类循环内分配一个新的UIView。设置完成后,我会将Tile(UIView)添加到当前视图,并将其添加到游戏控制器的磁贴数组中,以供参考。
现在的问题是,随着循环的每次迭代,图块对象都会自动释放,我希望它们被保留,以便我可以将它们存储在游戏控制器的图块容器中。如何让它记住瓷砖?
这是gameDelegate上的代码:
- (void) addTile:(Tile *)tile {
NSLog(@"Add tile %@", self.tiles);
[tiles addObject:tile];
}
最后添加的输出在这里:
Posted on pastebin.com for better formatting
此时,正如预期的那样,游戏控制器内部的整个本地图块数组将被输出,正如预期的那样;有一个包含 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];
}
// ...
}
// ...
}
【问题讨论】:
标签: ios memory-management automatic-ref-counting