私はアプリを開発しましたが、現在はInstrumentsを使用してメモリ使用量を確認しています。オブジェクトの保持/解放プロセスを理解するのに問題があります。これはインスツルメンツが言うことです:
オブジェクトを配列に追加するとき、ビューにオブジェクトを追加するとき、および配列から離すと、保持カウントが増加します。したがって、オブジェクトを使用するremoveFromSuperview
と、オブジェクトretainCount
がゼロになることはないため、オブジェクトはメモリを解放しません。
編集1:私はARCを使用していると言うのを忘れました。
編集2:私は何が起こるかを正確に説明します:私はオブジェクトをと呼ばれるクラスの他のオブジェクトと一緒に作成しますNKLevelGenerator
。その中にsを割り当ててから、返されるNKIngredient
aにすべてを追加します。NSArray
ここで、すべてのオブジェクトの保持数は2です。私のNKLevelVC
、私のViewController
、私はこの命令を使用します:
[level addObjectsFromArray:[levelGenerator level1WithDelegate:self ciotola:ciotola bagliore:bagliore difficulty:NKDifficultyHard]];
オブジェクトlevel
はNSMutableArray
そのialloc
とinit
inviewDidLoad
です。ここから、この操作を実行する別のメソッドを呼び出します。
- (void)insertInArrayRandomly {
for (int i=0; i<[level count]; i++) {
[ingredienti insertObject:[level objectAtIndex:[[indexes objectAtIndex:i]integerValue]] atIndex:i];
}
}
オブジェクトは私とingredienti
の別のものです。オブジェクトをランダムに抽出するためのランダムインデックスを含む配列です。それから私はこれをやっています:NSMutableArray
alloc
init
viewDidLoad
indexes
NSInteger
NKIngredient
NKIngredient *ing = [ingredienti objectAtIndex:index];
[[self view] insertSubview:ing belowSubview:navBar];
[ing animateIngredient];
[ingredienti removeObject:ing];