【问题标题】:Managing UIControls in NSMutableArray在 NSMutableArray 中管理 UIControls
【发布时间】: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 处的滑块。如何去做呢? 谢谢。

【问题讨论】:

    标签: ios xcode nsmutablearray uicontrol


    【解决方案1】:

    首先,您已经在堆栈中创建了所有 UISlider,位于每个 UISlider 之上。

    因为你的坐标是相同的CGRect(0,0,200,40)];

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

    现在,如果您想删除其中任何一个,只需使用

    [myArray removeObjectAtIndex:5];
    

    编辑:

    Jed's answer 的摘录。

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

    【讨论】:

    • 首先不,我的滑块没有堆叠,因为我有代码可以适当地设置它们的中心点。无论如何,所以我不需要 [[myArray objectAtIndex:j] release]; ?
    • 发布?你在使用 MRC 吗?
    • 好的。所以我不需要手动释放。很高兴知道谢谢。
    猜你喜欢
    • 2011-09-06
    • 2010-10-02
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多