gpt4 book ai didi

ios - heightForImageCellAtIndexPath 中 dispatch_once 的原因

转载 作者:可可西里 更新时间:2023-11-01 04:34:17 25 4
gpt4 key购买 nike

当我搜索如何在 iOS 中实现自动调整单元格大小时,我遇到了许多示例(here herehere),在 - (CGFloat)heightForImageCellAtIndexPath:(NSIndexPath *)索引路径

static CommentedItemCell *sizingCell = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sizingCell = [self.tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
});

但是我找不到这个 dispatch_once 背后的原因。我认为它的目的是节省一些内存,但为什么是这种风格。为什么不定义属性并延迟加载它。

@property (nonatomic, strong) UITableViewCell sizingCell;

- (UITableViewCell)getSizingCell
{
if (_sizingCell) return _sizingCell;

_sizingCell = [self.tableView dequeueReusableCellWithIdentifier:kCellIdentifier];

return _sizingCell;
}

想知道它的编码风格或者这个 dispatch_once 实现背后有一些好处。

最佳答案

dispatch_once 的行为在名称中。它只做一次,而且只做一次。

与其他方法相比,dispatch_once() 的好处是速度更快。它在语义上也更清晰,因为 dispatch_once() 的整个想法是“执行一次且仅一次”,这正是我们正在做的。

这是一个低级别的 GCD API,与任何其他方法相比,它提供了性能改进。

关于ios - heightForImageCellAtIndexPath 中 dispatch_once 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com