[译]用 Swift 协议扩展和泛型来实现复用

作为一个iOS开发者,最常用的任务就是通过自定义cell的子类,来实现UITableView或者UICollectionView的自定义。并且 UITableView 和 UICollectionView 在注册自定义cell子类这一块都有非常类似的API: public func registerClass(cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String) public func registerNib(nib: UINib?, forCellWithReuseIdentifier identifier: String) 对于注册cell的自定义最常用的解决办法就是,声明一个reuseIdentifier的常量,像下面这样: private let reuseIdentifier = "BookCell" class BookListViewController: UIViewController, UICollectionViewDataSource { @IBOutlet private weak var collectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() let nib = UINib(nibName:…