我有一个使用自定义视图 (HorizontalMenuView) 的视图控制器 (EmbeddedMenuView)。Embedded 菜单视图使用多个 HorizontalMenuViews。HorizontalMenuView 包含一个 UITableView。表格视图中的每个单元格都使用相当多的内存(高质量图像)。
现在,每次触摸 HorizontalMenuView 中的一部分表格视图单元格时,我都需要执行一项任务。我通过在表格视图单元格中创建一个协议并为 HorizontalMenuView 分配其委托来做到这一点。然后我在 HorizontalMenuView 中创建了一个协议,并为 EmbeddedMenuView 分配了它的委托。所以我将触摸事件传递给 EmbeddedMenuView。
问题是,当我分配单元格的委托时,HorizontalMenuView 不会被释放。由于此视图每次出现时都会自行刷新,因此内存占用很快就会失控。
如果我注释掉单元格被分配代表的部分,一切正常。
我的问题是:如何正确释放 UITableViewCell 的委托?
这是 HorizontalMenuView 的代码片段:
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Custom Logic
HorizontalMenuItemTableViewCell *cell = (HorizontalMenuItemTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[[NSClassFromString([[AMPUIManager sharedManager] classNameForName:cellIdentifier]) alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
cell.shouldAlwaysTransform = shouldAlwaysTransform;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.colorsDict = colorsDict;
if ([cell isKindOfClass:[ATCustomTableViewCell class]]) {
((ATCustomTableViewCell *)cell).delegate = self; //Commenting this out solves my problem.
}
}
//More Custom Logic
return cell;
}
PS我正在使用手动引用计数。ARC 不是该项目的选项。