iOS 5では、次のような問題が発生しました。新しい製品がアプリケーションで選択されるたびにコントローラで次のコードが呼び出されます。コントローラのビューに機能の箇条書きのリストを表示します。スーパービューから削除すると消えないUIImage
すべての箇条書きは、適切な場所(対応するテキストの前)に追加された画像です。
ここで問題となるのは、明らかにランダムに、以前の箇条書きリストから一部の箇条書きを削除しないことです。ただし、メソッドの最初にスーパービューから削除します。
- (void) loadProduct{
for (UIView * bullet in bullets){
bullet.hidden = YES;
[bullet removeFromSuperview];
}
[bullets removeAllObjects];
[self.view setNeedsDisplay];
......here some stuff ......
for (int i=0;i< numberOfFeatures;i++)
{
UIImageView * bullet = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bullet.png"]];
bullet.frame =CGRectMake(someFloatValue ,
someOtherFloatValue,
6,
6);
[self.view addSubview:bullet];
[bullets addObject:bullet];
[bullet release];
}
}
bullets
は、コントローラのプロパティであるNSMutableArrayです。
ここで何か問題がありますか? bullets
からすべてを削除するときに、あなただけのスーパービューからラベルを削除している、だから弾丸(UIImageView
コントロール)ですが
[bullets addObject:label];
:bullets
で
コードは正常です。弾丸のすべてのオブジェクトが削除されます。あなたがいくつかの弾丸が削除されていない場合、それは配列内にあるのか、それとも表示されていますか? – MadhavanRP
競争条件について私に暗示してくれたbabbidiに感謝します。このメソッドはほぼ同時に2回呼び出されました。 – madewulf