Swift 协议一致性

Swift protocol conformace

我有一个 class 分机:

extension UICollectionViewCell {

    class func registerFromNibInCollectionView(collectionView: UICollectionView, forReuseIdentifier identifier: String) {
    ...
    }

}

一些集合视图单元格符合协议UICollectionViewCellsProtocol。我想为符合协议的单元格创建另一个版本的 registerFromNibInCollectionView(具有不同的方法签名)。

我试过 extension UICollectionViewCell where Self: UICollectionViewCellsProtocol {,但没有成功。有什么想法可以实现吗?

你可以通过扩展协议本身来解决这个问题

protocol UICollectionViewProtocol {}
extension UICollectionViewProtocol {
    static func registerFromNibInCollectionView (collectionView: UICollectionView, forReuseIdentifier identifier: String) {
        //code
    }
}

class MyClass:UICollectionViewCell, UICollectionViewProtocol {

}
MyClass.register... // will work fine