OStack程序员社区-中国程序员成长平台

标题: iOS 开发 : How am I mismanaging memory in this code? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:07
标题: iOS 开发 : How am I mismanaging memory in this code?

我刚刚添加了一些取自 Apple docs 的代码它显示了如何使用从 nib 创建的自定义 UITableViewCells。我是 iOS 开发的新手,所以我仍在学习正确的内存管理,而且代码对我来说并不完全清楚它是如何工作的。当我运行 Allocations 工具时,它会在下面的代码中显示未分配的内存。具体来说,它显示在 View Controller 从导航堆栈中弹出后 UITableViewCells 仍然存在...

- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath 
{    
    static NSString *CellIdentifier = @"MyCustomCellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed"MyCustomCell_iPhone" owner:self options:nil];  //<--Allocations instrument complaining about this line
        cell = customCell;
        [self setCustomCell:nil];
    }

    return cell;
}

customCell 是在这个 View Controller 中定义的一个实例变量,像这样...

IBOutlet UITableViewCell *customCell;
@property (nonatomic, retain) IBOutlet UITableViewCell *customCell;

这段代码有问题吗?

非常感谢您的智慧!



Best Answer-推荐答案


我比较了文档中的代码:

if (cell == nil) {
    [[NSBundle mainBundle] loadNibNamed"TVCell" owner:self options:nil];
    cell = tvCell;
    self.tvCell = nil;
}

使用您的代码:

if (cell == nil) {
    [[NSBundle mainBundle] loadNibNamed"MyCustomCell_iPhone" owner:self options:nil];
    cell = [self customCell];
    [self setCustomCell:nil];
}

您分配 cell 的行似乎存在差异。 Apple 的示例代码使用 tvCell实例变量,而您使用 [self customCell]实例变量的属性 getter 。这可能是原因吗?尝试改变

    cell = [self customCell];

    cell = customCell;

关于iOS 开发 : How am I mismanaging memory in this code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347600/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4