-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TRSocialCell *cell = (TRSocialCell *)[self.tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TRSocialCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
__weak TREvent *eventFromParse;
if (!isSearchingEvents){
if ( [filteredArray[indexPath.section] count] == 0) {
[cell displayForNoEvents];
cell.selectedBackgroundView = bgCell;
return cell;
} else {
eventFromParse = filteredArray[indexPath.section][indexPath.row];
}
}
else eventFromParse = searched[indexPath.row];
//Cover Image
[eventFromParse.fileForCover getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
eventFromParse.coverPicture = [UIImage imageWithData:data];
cell.coverView.image = [UIImage imageWithData:data];
} else {
[TRAppDelegate displayInternetErrorForView:self.view];
}
}];
cell.titleAutoLabel.text = [NSString stringWithFormat:@"%@",eventFromParse.title];
cell.titleAutoLabel.fadeLength = 0;
cell.titleAutoLabel.pauseInterval = 2.0f;
[animatedLabels addObject:cell.titleAutoLabel];
if (eventFromParse.location != nil) {
cell.addressLabel.text = [NSString stringWithFormat:@"%@",eventFromParse.location.name];
}
[cell.titleAutoLabel setFont:[UIFont fontWithName:@"BigNoodleTitling" size:26]];
[cell.titleAutoLabel setTextColor:[UIColor whiteColor]];
[cell.addressLabel setFont:[UIFont fontWithName:@"BigNoodleTitling" size:18]];
[cell.addressLabel setTextColor:[UIColor whiteColor]];
[cell.dateLabel setFont:[UIFont fontWithName:@"BigNoodleTitling" size:18]];
[cell.dateLabel setTextColor:[UIColor whiteColor]];
cell.dateLabel.text = [NSString stringWithFormat:@"%@ - %@",[TRAppDelegate convertDateToDate:eventFromParse.date],[TRAppDelegate convertDateToTime:eventFromParse.date]];
cell.selectedBackgroundView = bgCell;
}
return cell;
}
我因为内存增加而遇到麻烦,但是我找不到它。每次滚动到另一个单元格时,if(!cell){}保持调用beign是否正常?
我是否必须在视图控制器的dealloc中将属性设置为nil?
这段代码可能泄漏了什么?
最佳答案
我因为内存增加而遇到麻烦,但是我找不到它。每次滚动到另一个单元格时,if(!cell){}保持调用beign是否正常?
不。您没有将新分配的单元格放入重用队列中。因此,每次需要提供一个新单元时,基本上就是在将一个新的笔尖加载到RAM中。这样,新的TRSocialCell
不知道其重用标识符是什么-因此,它们显然根本不会被重用。
尝试在TRSocialCell
实现文件中实现以下方法,以便您的单元格在系统询问时可以返回其reuseIdentifier
:
- (NSString *)reuseIdentifier {
return @"cell";
}
顺便说说:
对于
reuseIdentifier
来说,“cell”不是最明智的选择。如果某天要使用其他类型的单元格,则可能会弄乱您的重用队列。建议您将类别名称包含在标识符中。例如TRSocialCellID
关于ios - 在cellForRowAtIndexPath处增长的事件字节:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19190427/