我正在设定我的身高:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat rowHeight = 0;
if(indexPath.row == [self.items count]){ //more
rowHeight = 50.0; //same as moreCell
}
else{
ChartlyCell *cell = (ChartlyCell*)[self tableView:tblView cellForRowAtIndexPath:indexPath];
rowHeight = cell.totalHeight;
}
return rowHeight;
}
以下是cell.totalHeight
的计算方法:
-(float)totalHeight {
float h = messageLabel.totalheight + 35;
if(h < 68) h = 68;
return h;
}
NSZombieEnabled = NO
时,我的模拟器崩溃而没有调试错误。模拟器在NSZombieEnabled = YES
时运行正常。不确定如何解决?
更新 这就是我构建初始化单元格的方法:
cell = [[[ChartlyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier andDelegate:self andChartlyDelegate:self andChartlyObj:myChartlyObject]autorelease];
如果我删除自动释放,一切运行正常。我仍然困惑为什么?
答案 0 :(得分:0)
请参阅Cocoa Memory Management Guide。
假设cell
是实例变量,请考虑:
cell = [[[ChartlyCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier
andDelegate:self
andChartlyDelegate:self
andChartlyObj:myChartlyObject]autorelease];
当池耗尽时,这将导致cell
被收集,从而使cell
指向现已解除分配的ChartlyCell
实例。如果你想要一个物体附着,它必须保留。保留由alloc
隐含,并由autorelease
有效撤消。删除autorelease
会保留对象。
模拟器应该在启用僵尸的情况下解决错误。奇怪的是它没有。通过http://bugreport.apple.com/提交错误并附上应用程序崩溃版本的内置副本以及此SO问题的链接。