现在tableView加载但是当我尝试向下滚动表时应用程序崩溃了。继承我的代码:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"ince mal");
NSLog(@"%f", i);
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"cell"];
}
// fill it with contents
TFHppleElement * element = [searchResults objectAtIndex:indexPath.row];
NSString * tagContent = [element content];
cell.textLabel.text = tagContent;
return cell;
}
答案 0 :(得分:2)
您尚未分配元素,并尝试将其释放。这就是问题。
从代码中删除[element release]
。
任何具有保留计数0的对象都会被释放,然后它会崩溃。
设置NSZombieEnabled以检查哪个对象被释放。
编辑:
也删除这一行,
if (i == indexPath.row) {
return nil;
}
[tagContent release];
如果你想要一个空单元格,则返回as,
if (i == indexPath.row) {
return cell; //Before adding any cell contents.
}
答案 1 :(得分:0)
永远不要这样做(这会导致另一次崩溃(断言失败)):
if (i == indexPath.row) {
return nil;
}
关于你的崩溃:
[element release];
[tagContent release];
删除这些行
答案 2 :(得分:0)
我在这些代码中没有看到任何不好的东西。内容填充线可能会导致一些问题。我甚至在你的问题中找不到任何版本。每当您尝试滚动时,CellForRow都会被触发。因此,检查数组,以访问其对象。
答案 3 :(得分:0)
您的TableView没有任何问题,只有您使用它的方式。在您使用它的类中,它被分配,初始化和显示。但是我敢打赌你没有指向它,以防止它被垃圾收集。