iOS protocol 扩展,实现为遵守协议的类添加扩展方法

819 阅读1分钟
protocol LoadFromNIb {
    
}

extension LoadFromNIb where Self: UIView{
    ///扩展类方法,只要遵守 LoadFromNIb 协议,都可以使用
    static func loadViewFromNib(name: String?) -> Self {
        return Bundle.main.loadNibNamed(name ?? "\(self)", owner: nil, options: nil)?.last as! Self
    }
}

extension LoadFromNIb where Self: UIView{
    ///扩展实例方法 必须遵守 LoadFromNIb 协议
    func printSelf() {
        print("\(self)")
    }
}