我有一個小問題與ARC,我明白爲什麼它做它做什麼,但不是如何防止它。此代碼是示例「Tick tac toe」遊戲的一部分。ARC(iOS)自動發行問題
問題是在名爲Tile
的子循環內分配一個新的UIView
。一旦設置完成,我會將Tile
(UIView
)添加到當前視圖中,並將其添加到稍後用於參考的遊戲控制器陣列中。
現在的問題是,在循環的每次迭代中,圖塊對象都會自動釋放,並且我希望它們被保留下來,以便將它們存儲在gamecontroler的tile容器中。我如何讓它記住瓷磚?
這是對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];
}
// ...
}
// ...
}
這可能有助於http://stackoverflow.com/questions/6308425/ios-5-best-practice-release-retain – tipycalFlow 2012-02-26 17:15:37