iPhone:如何dealloc自定义单元格标签

时间:2011-02-02 14:00:00

标签: iphone uitableview

嗨我正在为Twitter上的UITableView自定义单元格工作,我为每个单元格添加UIImageView(userPhoto),UILabel(名称),UILabel(推文),UILabel(数据),这个我必须解除所有元素,

请浏览随附的INSTRUMENT TOOL分配屏幕截图

当我运行仪器工具时,它显示一些不是dealloc,如何dealloc, 这是我的代码

//自定义表格视图单元格的外观。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 static NSString *identifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];


if(!cell) {

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleGrouped reuseIdentifier:nil];

    //cell.selectionStyle = UITableViewCellSelectionStyleNone;

UILabel *name  = [[UILabel alloc]initWithFrame:CGRectMake(72,3,242,15)] ;
name.text   = (NSString*)[(Tweet*)[tweetArray objectAtIndex:indexPath.row] userName];
[name setFont:[UIFont fontWithName:@"Helvetica" size:13]];
name.textColor=[UIColor colorWithRed:250 green:250 blue:210 alpha:0.5];
[name setBackgroundColor:[UIColor clearColor]];



UILabel *date  = [[[UILabel alloc]initWithFrame:CGRectMake(200,3,130,15)] autorelease];
date.text   = (NSString*)[(Tweet*)[tweetArray objectAtIndex:indexPath.row] created_at];
[date setFont:[UIFont fontWithName:@"Helvetica" size:12]];
date.textColor=[UIColor colorWithRed:250 green:250 blue:210 alpha:0.5];
[date setBackgroundColor:[UIColor clearColor]];



UILabel * tweetLabel  = [[UILabel alloc]initWithFrame:CGRectMake(72,20,242,60)] ;
tweetLabel.text   = (NSString*)[(Tweet*)[tweetArray objectAtIndex:indexPath.row] tweet];
tweetLabel.numberOfLines = 3;
tweetLabel.textColor=[UIColor colorWithRed:252 green:148 blue:31 alpha:1];
[tweetLabel setFont:[UIFont fontWithName:@"Helvetica" size:12]];
[tweetLabel setBackgroundColor:[UIColor clearColor]];

UIImageView *myImage = [[UIImageView alloc]initWithFrame:CGRectMake(6,10,58,60)] ;
NSURL *url = [NSURL URLWithString:[(Tweet*)[tweetArray objectAtIndex:indexPath.row] image_url]];
NSData *data = [NSData dataWithContentsOfURL:url];
[myImage setImage: [UIImage imageWithData:data]];

[cell.contentView addSubview:myImage];
[cell.contentView addSubview:tweetLabel];
[cell.contentView addSubview:name];
[cell.contentView addSubview:date];

[myTweetActivityIndi​​cator stopAnimating];     [myTweetActivityIndi​​cator setHidesWhenStopped:YES];

return cell;

}

请指导我 谢谢This image for instrument tools one

3 个答案:

答案 0 :(得分:1)

您可以使用

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewStyleGrouped reuseIdentifier:nil] autorelease];

对于其他标签,您可以使用

 [date release]; [tweetLabel release]; [name release]; [myImage release];

答案 1 :(得分:1)

您必须尽快向使用release / init(姓名,日期,tweetLabel,myImage)分配的所有对象发送alloc条消息用它们完成(例如,在addSubview之后)。请注意,根据documentation,接收方会保留视图。

答案 2 :(得分:1)

尝试使用

NSData *data = [[NSData alloc] initWithContentsOfURL:url];

[myImage setImage:[UIImage imageWithData:data]]; [数据发布]; data = nil;

在这种情况下,我们手动释放分配的内存。我希望,这是有效的