sar*_*unw 5 objective-c autosize uitableview ios autolayout
当我搜索如何实现iOS中自动调整大小电池我碰到过很多例子(这里 这里,并在这里与这个神秘的代码)- (CGFloat)heightForImageCellAtIndexPath:(NSIndexPath *)indexPath
static CommentedItemCell *sizingCell = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sizingCell = [self.tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
});
Run Code Online (Sandbox Code Playgroud)
但我找不到这个dispatch_once背后的原因.我认为它的目的是节省一些记忆,但为什么这种风格.为什么不定义属性和延迟加载它.
@property (nonatomic, strong) UITableViewCell sizingCell;
同
- (UITableViewCell)getSizingCell
{
if (_sizingCell) return _sizingCell;
_sizingCell = [self.tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
return _sizingCell;
}
Run Code Online (Sandbox Code Playgroud)
想知道它的编码风格,或者这个dispatch_once实现背后有一些好处.
仅当您有表/集合视图的多个实例时,它才会节省内存,因为它们都将重用同一实例。尽管可能不经常使用,但这种方法更有效。使用静态还可以将所有代码保留在一处。
您当然可以按照您建议的方式进行操作,并且一次调度的好处并不大,但我会选择一次调度路线(尽管您可以在模型中使用一次调度来实现延迟加载)。
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |