协议
程序员文章站
2022-06-06 23:37:41
...
协议
定义格式
定义协议的方式与类、结构体、枚举类型非常相似
protocol SomeProtocol {
// protocol definition goes here
}
多个协议用逗号分开,如果类有父类,将父类名放在协议之前,并用逗号隔开
class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
// class definition goes here
}
协议是可以继承的
protocol WorkProtocol {
func doWork()
}
protocol WorkProtocol2: WorkProtocol {
func doWork2()
}
协议中代理的使用
代理属性一般需要使用 weak
修饰的时候,这时协议有两种处理方法:
- 协议继承
class
类
protocol WorkProtocol: class {
func doWork()
}
- 协议继承 NSObjectProtocol
protocol WorkProtocol: NSObjectProtocol {
func doWork()
}
协议中可选
在Swift中,如果遵循了协议,就必须要实现协议里面所有的方法
,协议可选是 Objective-C
的特性。在Swift中,如果需要实现协议的可选,就是让协议具有 Objective-C
的特性。
@objc
protocol WorkProtocol {
@objc optional func doWork()
}
class Person: WorkProtocol {
}