我试图找出前3个小时的错误。通过搜索,我已经知道这个错误与内存管理有关,但我没有弄清楚我做错了什么。
我已声明这4个标签:
@interface InteractiveHistory : UITableViewController {
UILabel *date;
UILabel *startTime;
UILabel *cal;
UILabel *duration;
}
然后创建属性并合成它们。在viewDidLoad中,我初始化了所有这些:
date = [[UILabel alloc] init];
我也在dealloc()方法中取消分配它们。
我想要做的是使用这4个标签在表格的单元格中写入一些文本。文本将取决于indexPath。
在cellForRowAtIndexPath方法中,只显示2个标签并指出错误行:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
NSLog(@"constructing cell");
//set up labels text
date = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];
NSLog(@"%@",date.text); //App crashes at this line
[date setTag:1];
startTime = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Start Time"]];
//setting tag and position of label
[startTime setTag:2];
CGRect labelpos = startTime.frame;
labelpos.origin.y = date.bounds.size.height + 2;
startTime.frame = labelpos;
NSLog(@"labels set");
// Configure the cell...
[[cell contentView] addSubview:date];
[[cell contentView] addSubview:startTime];
[[cell contentView] addSubview:duration];
[[cell contentView] addSubview:cal];
NSLog(@"A cell set");
}
return cell;
}
任何人都可以告诉我,我做错了什么?我希望我的问题很清楚..
答案 0 :(得分:9)
该行:
date = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];
应该是:
date.text = [NSString stringWithFormat:@"%@",[[int_data objectAtIndex:indexPath.row] objectForKey:@"Date"]];
否则,您的date
指针将设置为NSString的实例,而不是设置其内容。
编辑:
正如danh正确指出的那样,startTime
会遇到同样的问题。