Ios UIView&;当UIView成为UITableViewCell的委托时,UITableViewCell未解除分配

Ios UIView&;当UIView成为UITableViewCell的委托时,UITableViewCell未解除分配,ios,ipad,memory-management,uitableview,Ios,Ipad,Memory Management,Uitableview,我有一个视图控制器(EmbeddedMenuView),它使用自定义视图(HorizontalMenuView)。嵌入式菜单视图使用多表水平菜单视图。水平菜单视图包含UITableView。表视图中的每个单元格都使用相当多的内存(高质量图像) 现在,我需要在每次触摸HorizontalMenuView中的表视图单元格部分时执行一项任务。为此,我在表视图单元格中创建了一个协议,并将HorizontalMenuView分配给它的委托。然后,我在HorizontalMenuView中创建了一个协议,并

我有一个视图控制器(EmbeddedMenuView),它使用自定义视图(HorizontalMenuView)。嵌入式菜单视图使用多表水平菜单视图。水平菜单视图包含UITableView。表视图中的每个单元格都使用相当多的内存(高质量图像)

现在,我需要在每次触摸HorizontalMenuView中的表视图单元格部分时执行一项任务。为此,我在表视图单元格中创建了一个协议,并将HorizontalMenuView分配给它的委托。然后,我在HorizontalMenuView中创建了一个协议,并将EmbeddedMenuView分配给它的委托。因此,我将触摸事件传递到嵌入式MenuView

问题是,当我分配单元格的委托时,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不是此项目的选项。

听起来您可能有一个循环引用。您几乎总是希望对代理使用“分配”约定


请参阅:

闻起来有点像循环引用-您是否为您的代理使用“分配”约定?我使用的是retain。我似乎忽略了那个细节。回答这个问题,我会接受的,如果它检查出来。