Ios UIView&;当UIView成为UITableViewCell的委托时,UITableViewCell未解除分配
我有一个视图控制器(EmbeddedMenuView),它使用自定义视图(HorizontalMenuView)。嵌入式菜单视图使用多表水平菜单视图。水平菜单视图包含UITableView。表视图中的每个单元格都使用相当多的内存(高质量图像) 现在,我需要在每次触摸HorizontalMenuView中的表视图单元格部分时执行一项任务。为此,我在表视图单元格中创建了一个协议,并将HorizontalMenuView分配给它的委托。然后,我在HorizontalMenuView中创建了一个协议,并将EmbeddedMenuView分配给它的委托。因此,我将触摸事件传递到嵌入式MenuView 问题是,当我分配单元格的委托时,HorizontalMenuView不会取消分配。由于每次视图出现时,该视图都会自动刷新,因此内存占用会很快失控 如果我注释掉单元格中指定了代理的部分,则一切正常 我的问题是:如何正确释放UITableViewCell的委托 这是HorizontalMenuView中的代码片段:Ios UIView&;当UIView成为UITableViewCell的委托时,UITableViewCell未解除分配,ios,ipad,memory-management,uitableview,Ios,Ipad,Memory Management,Uitableview,我有一个视图控制器(EmbeddedMenuView),它使用自定义视图(HorizontalMenuView)。嵌入式菜单视图使用多表水平菜单视图。水平菜单视图包含UITableView。表视图中的每个单元格都使用相当多的内存(高质量图像) 现在,我需要在每次触摸HorizontalMenuView中的表视图单元格部分时执行一项任务。为此,我在表视图单元格中创建了一个协议,并将HorizontalMenuView分配给它的委托。然后,我在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不是此项目的选项。听起来您可能有一个循环引用。您几乎总是希望对代理使用“分配”约定
请参阅:闻起来有点像循环引用-您是否为您的代理使用“分配”约定?我使用的是retain。我似乎忽略了那个细节。回答这个问题,我会接受的,如果它检查出来。