UITableviewCell Dealloc没有开火

时间:2015-03-09 00:22:37

标签: ios objective-c uitableview

我在TableViewController内有PageViewController,被推入NavigationController。当我点按“返回”以卸载PageViewController时,我看到PageViewController已取消分配,然后TableViewController已取消分配,而不是TableView单元格。

我已尽可能简化TableViewCell ......

#import "MyTableViewCell.h"

@implementation MyTableViewCell

- (void)awakeFromNib {
    NSLog(@"Created");
}

- (void)dealloc
{
    NSLog(@"DEALLOCed");
}

@end

...但仍然只能看到TableViewCell的创建消息。

这就是我加载细胞的方式......

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"EmptyCell";

    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (!cell) {
        cell = [[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    return cell;
}

可能导致TableView单元留在内存中的任何想法?如果TableViewController方法正在调用PageViewController方法,我是否正确认为dealloc和{{1}}会出现问题?

1 个答案:

答案 0 :(得分:0)

结果证明问题是我在TableView为空时显示消息的类保留了对TableView控制器的引用。使这个弱点和问题排序:)