swift可选协议

第一种方式(oc):

@objc protocol TestProtocol {
    @objc optional func optionalFuncTest()
    func funcTest()
}

class TestPro: NSObject {
    func test() {
    }
}

extension TestPro: TestProtocol {
    func funcTest() {   
    }
}

class TestPro2: NSObject, TestProtocol {
    func funcTest() {
    }
    func optionalFuncTest() {
    }
}

使用:

        let test1 = TestPro()
        if test1.responds(to: #selector(TestProtocol.optionalFuncTest)) {
            print("可以这样")
        } else {
            print("没有实现")
        }
        
        let test2 = TestPro2()
        if test2.responds(to: #selector(TestProtocol.optionalFuncTest)) {
            print("实现了这个方法")
        }

第二种方式(swift):
参考:http://swifter.tips/objc-protocol/

protocol TestProtocol2 {
    func optionalFuncTest()
    func funcTest()
}

//添加一个默认实现
extension TestProtocol2 {
    func optionalFuncTest() {
        print("调用了这个函数")
    }
}

class TestPro3: TestProtocol2 {
    func funcTest() {
    }
}

使用:

let test3 = TestPro3()
test3.optionalFuncTest()

你可能感兴趣的:(swift可选协议)