• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 开发 : How am I mismanaging memory in this code?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:07:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我刚刚添加了一些取自 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap