iOS のメモリ管理を理解するのに苦労することがあります。
私はいくつかのアプリを引き継いで、それを開発しています。アプリは展開ターゲット 4.3 で開発されており、クライアントの要件により変更することはできません。
ピッカーを作成する方法があります。
NSMutableArray *arrayToLoad = [[NSMutableArray alloc] initWithObjects: obj, nil];
[arrayToLoad addObjectsFromArray: (NSMutableArray*)[valueArrays objectAtIndex: btn.tag]];
if( !picker )
{
picker = [[WybierzZListyViewController alloc] initWithValues: arrayToLoad useObjectType: YES selectedIndex:0];
[self.view addSubview: picker.view];
picker.delegate = self;
[picker animate];
}
else
{
picker = [[WybierzZListyViewController alloc] initWithValues: arrayToLoad useObjectType: YES selectedIndex:0];
[picker reuseWithValues: arrayToLoad useObjectType: YES selectedIndex: indexes[btn.tag]];
[picker animate];
}
このelseブロック、特にメソッドreuseWithValuesは私に多くの問題を引き起こし、おそらくそれを一掃するでしょう.
以前の開発者は、新しいピッカーを最初から作成する代わりに、以前に作成したピッカーを再利用することについて正しかったですか? 合理的に聞こえますが、後で私にとって難しいことはほとんどありません。
picker = [[WybierzZListyViewController alloc] initWithValues: arrayToLoad useObjectType: YES selectedIndex:0];
[self.view addSubview: picker.view];
picker.delegate = self;
[picker animate];
else ブロックなしで、メモリ リークを回避します。理論的には、ピッカー変数の下に新しい ViewController を割り当てる必要がありますが、置き換えたものはどうでしょうか。交換する前に、どういうわけかそれを破壊する必要がありますか?