第一种方式(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()
网友评论