在 NSMutableArray 中管理 UIControls
Posted
技术标签:
【中文标题】在 NSMutableArray 中管理 UIControls【英文标题】:Managing UIControls in NSMutableArray 【发布时间】:2013-03-30 10:07:18 【问题描述】:我有一个 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 处的滑块。如何去做呢? 谢谢。
【问题讨论】:
【参考方案1】:首先,您已经在堆栈中创建了所有 UISlider,位于每个 UISlider 之上。
因为你的坐标是相同的CGRect(0,0,200,40)];
所以你只会看到其中一个。
现在,如果您想删除其中任何一个,只需使用
[myArray removeObjectAtIndex:5];
编辑:
Jed's answer 的摘录。
与 NSArray 一样,NSMutableArray 的实例保持强引用 到他们的内容。如果不使用垃圾回收,当将对象添加到数组时,对象 收到保留消息。当一个对象从一个可变对象中移除时 数组,它接收一个释放消息。如果没有进一步 对象的引用,这意味着对象被释放。 如果您的程序保留对此类对象的引用,则该引用 除非您之前向对象发送保留消息,否则将变为无效 它已从数组中删除。
【讨论】:
首先不,我的滑块没有堆叠,因为我有代码可以适当地设置它们的中心点。无论如何,所以我不需要 [[myArray objectAtIndex:j] release]; ? 发布?你在使用 MRC 吗? 好的。所以我不需要手动释放。很高兴知道谢谢。以上是关于在 NSMutableArray 中管理 UIControls的主要内容,如果未能解决你的问题,请参考以下文章
iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong
iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong