swift 協(xié)議方法可選
protocol TextOptionalProtocol{
//必須實(shí)現(xiàn)的方法
func text()
//可選實(shí)現(xiàn)的方法
func textOption()
}
extension TextOptionalProtocol{
func testOption() {
print("可選協(xié)議")
}
}
讓一個類去實(shí)現(xiàn)這個協(xié)議
class TextOptionalProtocolClass: TextOptionalProtocol{
func text() {
print("Text")
}
}
可選協(xié)議我們可以不用去實(shí)現(xiàn)薯定,但是可以直接去調(diào)用testOption這個方法
let text = TextOptionalProtocolClass()
text.textOption()
// 可選協(xié)議
我們還可以在TextOptionalProtocolClass中重新實(shí)現(xiàn)一下textOption
class TextOptionalProtocolClass: TextOptionalProtocol{
func text() {
print("Text")
}
func textOption() {
print("重新實(shí)現(xiàn)的方法")
}
}
let text = TextOptionalProtocolClass()
text.textOption()
// 重新實(shí)現(xiàn)的方法
我們來測試一下我們常見的代理模式
class TextOptionalProtocolClass: TextOptionalProtocol{
init(delegateText: DeleageText) {
delegateText.delegate = self
}
func text() {
print("Text")
}
}
class DeleageText {
var delegate: TextOptionalProtocol?
func textDelegate(){
delegate?.textOption()
}
}
let delegateText = DeleageText()
let text = TextOptionalProtocolClass(delegateText: delegateText)
delegateText.textDelegate()
// 可選協(xié)議
我們讓TextOptionalProtocolClass實(shí)現(xiàn)一下可選方法
class TextOptionalProtocolClass: TextOptionalProtocol{
init(delegateText:DeleageText) {
delegateText.delegate = self
}
func text() {
print("Text")
}
func textOption() {
print("重新實(shí)現(xiàn)的方法")
}
}
class DeleageText{
var delegate: TextOptionalProtocol?
func textDelegate(){
delegate?.textOption()
}
}
let delegateText = DeleageText()
let text = TextOptionalProtocolClass(delegateText: delegateText)
delegateText.textDelegate()