我们的应用程序面临崩溃。我检查仪器,在分配10 MB应用程序后,在任何时候(不是任何修复实例)都会崩溃。
我每次点击for循环中的任何按钮分配approax 1000标签,并在完成工作后释放它请帮助。在仪器中没有内存泄漏,但在分配10 MB内存后仍然会崩溃。
这是我在点击按钮时应用的代码 这是正确的方法??????
-(IBACTION) btnShow
{
for (UIView *obj in scrollview.subviews)
{
[obj removeFromSuperview];
}
int x;
int y=0;
for (int j=0; j<12; j++) {
x=0;
// Do any additional setup after loading the view, typically from a nib.
for (int i=0; i<1000; i++) {
UILabel * lblUsage=[[UILabel alloc] initWithFrame:CGRectMake(x, y, 75, 45)];
lblUsage.text=[NSString stringWithFormat:@"%d",i];
lblUsage.textColor=[UIColor lightGrayColor];
lblUsage.numberOfLines=2;
lblUsage.font = [UIFont systemFontOfSize:14.0];
lblUsage.textAlignment=UITextAlignmentCenter;
lblUsage.backgroundColor=[UIColor colorWithPatternImage:
[UIImage imageNamed:@"labelBox.png"]];
lblUsage.layer.borderColor = [UIColor blackColor].CGColor;
lblUsage.layer.borderWidth = 0.5;
[scrollview addSubview:lblUsage];
[lblUsage release];
x+=75;
}
y+=40;
}
scrollview.contentSize=CGSizeMake(x, 1000);
}
答案 0 :(得分:2)
您在上面的代码中收到内存警告
内存警告级别1是第一个警告,您应该删除不必要的视图以清理内存
内存警告级别2是限制..现在删除某些内容或您的应用程序将在几秒钟内退出。
当系统决定退出您的应用程序时,会发送内存警告级别3!由于内存使用
答案 1 :(得分:0)
很抱歉,但你必须采取完全不同的方法 - 这将是 使您的代码更复杂。你无法通过创造来解决问题 12.000标签与图案背景。
最初,您只会创建屏幕上显示的标签和一个或 用户滚动时可能很快出现在屏幕上的两行(和列)
然后,您将通过动态创建和处理标签来完成viewDidScroll
中的大部分工作。
在这里,您的代码应该决定哪些标签可以处理(当它们距离可见屏幕足够远时)
并且必须创建它们,因为它们很快就会出现在屏幕上(取决于内容的当前位置)。
偏移)
以ScrollViewSuite作为平铺示例。这不完全是你在想什么 因为它应该给你一个kickstart。