【发布时间】:2010-11-12 00:33:58
【问题描述】:
我有一些(我认为)非常基本的代码,用于从数据源创建单元格内容,并且在显示加载时一切正常。但是,当我开始滚动查看其他文本(向上或向下)时,代码失败并显示“GDB:程序接收信号:“EXEC_BAD_ACCESS”。这是填充各个部分的显示的代码;每个部分都有类似的代码:
id cell = (UITableViewCell *)[tableView
dequeueReusableCellWithIdentifier:CellIdentifier
];
titledCell = [[[TitledCell alloc]
initWithFrame:CGRectZero
reuseIdentifier:CellIdentifier
] autorelease
];
switch (tableSection) {
case TABLE_SECTION_1:
if (cell == nil) {
dataKey = @"a key from data source";
dataFromSource = [viewData objectForKey:dataKey];
titledCell.title.text = dataKey;
titledCell.contents.text = dataFromSource;
cell = titledCell;
break;
}
case TABLE_SECTION_2:
...
}
return cell;
当我跟踪代码时,我注意到当将单元格滚动回视图时,代码会跳过单元格创建,因为单元格!= nil。如果它跳过,这意味着单元格包含与第一次创建时相同的内容,对吗?为什么给我找麻烦?
【问题讨论】:
-
检查调试器窗口和控制台会有帮助
-
您应该真正遵循您在 iPhone 和 Mac OS X 示例代码中看到的规范 Objective-C 编码风格;它将使您的代码更容易被其他人阅读并帮助您。
-
好点,克里斯,我已经改变了一点——虽然我对规范的 Objective-C 风格不是很熟悉,所以它可能不太正确。我会努力的。
标签: objective-c iphone exception