Swift 扩展类extension重复定义方法的问题

Swift是否支持对同一个类的同一个方法重复定义呢?比如要对UIView进行扩展,分别写了两个extension

extension UIView {
    func fun1() {
        print("fun1-1")
    }
}

extension UIView {
    func fun1() {
        print("fun1-2")
    }
}

这样是不允许的,错误如下:Invalid redeclaration of 'fun1()'

那能否重新定义原生类的方法呢?我们测试一下:

extension UIView {
    //重新定义UIView的addSubview,写原生方法完全一样
    func addSubview(_ view: UIView) -> Void {
        print("add")
    }
}

结果是可以的:调用addSubview执行的是extension中的方法:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容