私はARCの問題を抱えています。なぜそれが何をするのか理解していないのですが、それを防ぐ方法はわかりません。このコードはサンプル "Tick tac toe"ゲームの一部です。ARC(iOS)の自動解放に関する問題
問題は、Tile
という名前でサブクラス化されたループ内に新しいUIView
を割り当てることです。セットアップが完了したら、Tile
(UIView
)を現在のビューに追加し、後で参照用に使用するタイルのgamecontroller配列に追加します。
問題は、ループが繰り返されるたびにタイルオブジェクトが自動的に解放され、それらを保持して、それらをgamecontrolerのタイルコンテナに格納できるようにすることです。どのようにタイルを覚えているのですか?
これは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