2013-03-30 29 views
0

我有一个NSMutableArray。在NSMutableArray中管理UIControls

我创建一个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处的滑块。如何去做这件事? 谢谢。

回答

3

首先,您已经创建了所有UISliders堆栈中的每一个顶部。

为您的坐标相同CGRect(0,0,200,40)];

所以,你会看到只有其中的一个。

现在如果你想删除它们中的任何一个简单的使用

[myArray removeObjectAtIndex:5]; 

编辑:

Jed's answer的提取物。

与NSArray类似,NSMutableArray的实例对其内容保持强引用 。如果您不使用垃圾回收,则当您将对象添加到数组时,对象 会收到一条保留消息。当一个对象从可变的 数组中移除时,它会收到一条释放消息。如果没有进一步的对该对象的引用,这意味着该对象被解除分配。 如果您的程序保留对这样一个对象的引用,那么引用 将变为无效,除非您在从该数组中删除 之前向对象发送保留消息。

+0

首先不,我的滑块没有堆叠,因为我有代码来适当地设置它们的中心点。无论如何,所以我不需要[[myArray objectAtIndex:j] release]; ? – GeneCode

+0

发布?你在使用MRC吗? –

+0

@Rocotilos:检查我的编辑。 –