【发布时间】:2014-04-06 00:00:24
【问题描述】:
我有一个UITableViewController,我自定义了它的UITableViewCells。每个UITableViewCell 包含两个UIImageViews 和两个UILabels。虽然当我进入UITableView 时,内存使用量增加到 100 MB,但我不知道原因。这是处理单元格自定义的cellForRowAtIndexPath 方法的代码。谁能帮我解决这个问题?
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"Cell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:simpleTableIdentifier];
}
UILabel *mnhmeioLabel = (UILabel *)[cell viewWithTag:102];
mnhmeioLabel.frame = CGRectMake(mnhmeioLabel.frame.origin.x,
mnhmeioLabel.frame.origin.y,
191,
21);
Group *tmpGroup = [mnhmeiaTotal objectAtIndex:indexPath.row];
NSLog(@"%@ ",tmpGroup.title);
NSLog(@"%f %f", mnhmeioLabel.bounds.size.width,
mnhmeioLabel.bounds.size.height);
mnhmeioLabel.text = tmpGroup.title;
mnhmeioLabel.font = [UIFont fontWithName:@"Open Sans" size:10];
mnhmeioLabel.numberOfLines=0;
mnhmeioLabel.lineBreakMode=NSLineBreakByWordWrapping;
[mnhmeioLabel sizeToFit];
if( tmpGroup.imagesOfArticle.count > 0 ){
UIImageView *mnhmeioImageView = (UIImageView *)[cell viewWithTag:103];
mnhmeioImageView.image = [tmpGroup.imagesOfArticle objectAtIndex:0];
} else {
UIImageView *mnhmeioImageView = (UIImageView *)[cell viewWithTag:103];
mnhmeioImageView.image = [UIImage imageNamed:@""];
}
UIImageView *markerImageView=(UIImageView *)[cell viewWithTag:100];
markerImageView.image=[self selectMarker:tmpGroup];
UILabel *mnhmeioDescription = (UILabel *)[cell viewWithTag:101];
mnhmeioDescription.text=tmpGroup.constructedContent;
mnhmeioDescription.font = [UIFont fontWithName:@"Open Sans" size:6];
}
【问题讨论】:
-
也许是图片?图像可以快速使用大量内存.. 只需计算宽度height位深度...
-
您可以将
[UIImage imageNamed:@""]替换为nil。否则,您将创建一个空对象。您还创建了几个字体对象(每个单元格两个新对象)。只需使用静态对象。 -
可以创建自定义 UITableCell appcoda.com/customize-table-view-cells-for-uitableview
-
另外,如果你的图片尺寸比你的 mnhmeioImageView 尺寸大很多,你应该调整你的图片尺寸。
-
什么“种类”的内存可以增长到 100MB?您应该只注意“所有堆分配”。
标签: ios objective-c memory-management uitableview