Tag: 软件

Swift中协议更好的重用标识符

最近,我正在经历设置新的UICollectionView 。 我已经为单元格编写了一个视图模型,并准备了一个UICollectionViewCell子类。 剩下要做的就是实现cellForItem(at:) 。 UICollectionView :如果您以前没有使用过UICollectionView ,而是更像UITableView ,那么您可以将Collection替换为Table ,将Item替换为Row并且该帖子仍然有效。 作为一名负责任的iOS工程师[需要引用],我知道我在这里要做的第一件事就是让我的collectionView出队一个单元。 为此,我必须调用dequeueReusableCell(withReuseIdentifier:for:) ,并传递一个String “重用标识符”。为了使collectionView知道我在说什么,我还必须调用register(_:forCellWithReuseIdentifier:) ,因此它知道将此重用标识符映射到我的UICollectionViewCell子类。 该子类大致如下所示: 最后一个类CustomCollectionViewCell:UICollectionViewCell {//代码等。 除此以外: CustomCollectionViewCell只是一个示例名称。 请不要这样命名类。 我确定此单元格的明智重用标识符为”CustomCollectionViewCell” 。 因此,我使用了它,并调用了这两种方法。 这些调用看起来像这样: //在设置方法中 collectionView.register( CustomCollectionViewCell.self, forCellWithReuseIdentifier:“ CustomCollectionViewCell” ) //在cellForItem(at :)中 collectionView.dequeueReusableCell( withReuseIdentifier:“ CustomCollectionViewCell” 用于:indexPath ) 这显然很糟糕。 我们周围挂着一根魔力绳,而且它不止一个地方。 显然,这需要一些重构,所以这正是我所做的。 第一步只是将字符串移动到CustomCollectionViewCell类的静态常量中。 最后一个类CustomCollectionViewCell:UICollectionViewCell {静态让复用Identifier =“ CustomCollectionViewCell”} 好的,好的开始。 这意味着我们可以使用CustomCollectionViewCell.reuseIdentifier访问代码中的任何位置的标识符。 已经比我们以前有了很大的改进。 但这确实带来了另一个问题。 如果以后更改类名怎么办? 我们可能只记得更改它,但让我们在这里成为现实:我们是人类,我们并不总是记住这样的事情。 即使它正盯着我们看着。 这就是为什么我们需要计算机为我们做这些事情的原因。 这样就很好地引出了下一个问题:我们可以让编译器来帮助我们吗? […]