0

NSMutableArray があります。

UIControl (UISlider など) を作成し、for ループでこの配列に追加します。

for (int i=0; i<totalSlider; i++) {

UISlider *tmpSlider = [[UISlider alloc] initWithRect:CGRect(0,0,200,40)];

[myArray addObject: tmpSlider];

}

これは正常に動作します。私はそれを参照することができます

UISlider *tmpSlider = [myArray objectAtIndex:j];

しかし、その配列内の残りのスライダーを維持しながら、これらのオブジェクトを個別に削除して解放するにはどうすればよいでしょうか?

たとえば、この配列には 10 個のスライダーがあります。インデックス 5 のスライダーを削除したいのですが、どうすればいいですか? ありがとう。

4

1 に答える 1

3

まず、すべての UISliders をそれぞれの上に重ねて作成しました。

座標が同じなのでCGRect(0,0,200,40)];

したがって、そのうちの 1 つだけが表示されます。

それらのいずれかを削除する場合は、単に使用します

[myArray removeObjectAtIndex:5];

編集:

Jed's answerからの抜粋。

NSArray と同様に、NSMutableArray のインスタンスはそのコンテンツへの強力な参照を維持します。ガベージ コレクションを使用しない場合、オブジェクトを配列に追加すると、オブジェクトは保持メッセージを受け取ります。オブジェクトが可変配列から削除されると、解放メッセージを受け取ります。オブジェクトへの参照がこれ以上ない場合、これはオブジェクトの割り当てが解除されたことを意味します。プログラムがそのようなオブジェクトへの参照を保持している場合、オブジェクトが配列から削除される前に保持メッセージを送信しない限り、参照は無効になります。

于 2013-03-30T10:11:24.997 に答える