我以编程方式在函数中创建标签并将它们放入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];
}
}
这是从superview中删除它们的功能:
- (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;
}
}
}
我想知道我做错了什么!感谢。
答案 0 :(得分:1)
将视图添加到数组中。 NSArray
(和NSMutableArray
)会保留您添加的对象。在从阵列中删除它们之前,不会取消分配。
因此,除了调用removeFromSuperview
之外,您还必须从数组中删除视图。