0

プログラムで関数内にラベルを作成し、それらを NSMutableArray に配置してから、それらを別の関数から削除しています。問題は、ラベルが実際には画面から消えることですが、ラベルはまだメモリを使用しており、しばらくするとプログラムの動作が非常に遅くなります。

これが私のコードです:

これは、ラベルを作成する関数です。

- (void)CrearEstrellas{
    for(int i=0; i< 10; i++)
    {
        float x = arc4random() %300;
        float y = arc4random() %100;
        UILabel *estrella = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 4, 4)];
        estrella.tag = i;
        estrella.center = CGPointMake(x,y-100);
        estrella.text = @".";
        estrella.textColor = [UIColor whiteColor];
        [self.view.superview addSubview: estrella];
        [arrayEstrellas insertObject:(estrella) atIndex: i];
    }

}

そして、これはスーパービューからそれらを削除する関数です:

- (void)Lineatiempo{
    for(int i=0; i<[arrayEstrellas count]; i++)
    {
        UILabel *estrella = [arrayEstrellas objectAtIndex:(i)];
        float x = estrella.center.x;
        float y = estrella.center.y;
        estrella.center = CGPointMake(x,y+10);
        if(estrella.center.y>200){
            [estrella removeFromSuperview];
             estrella = nil;
        }
    }
}

私は何が間違っているのか知りたいです!ありがとう。

4

1 に答える 1

1

ビューを配列に追加します。NSArray(およびNSMutableArray) 追加したオブジェクトを保持します。配列から削除するまで、割り当ては解除されません。

したがって、呼び出しに加えてremoveFromSuperview、配列からビューを削除する必要もあります。

于 2012-11-22T03:05:09.783 に答える