iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0

補班日

  • Protocol是定義特定任務的function或property、method或需求的藍圖。
  • Protocol能夠提供給Class、Structure或是Enumeration去完成他們所需要的功能應用。
  • 所有繼承Protocol的都算是遵守協議
  • 除了需實現的要求外,還可以用extend來分別實現符合類型的需求以及function。

Protocol語法

  • 定義Protocol類似Classes、Structures和Enumerations
protocol SomeProtocol {
    // protocol definition goes here
}
  • 自定義的型別採用協議的方式,將類型名稱後跟冒號中間放上協議的名稱,當作定義。可以以逗號的方式遵從多個協議。
struct SomeStructure: FirstProtocol, AnotherProtocol {
    // structure definition goes here
}
  • 如果是Class的遵從方式如下
class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
    // class definition goes here
}

Protocol定義了規則或需求,像是function或property。Class或是遵從Protocol的型態,則是實現這些function或property。

Protocol應用

protocol Name {
    func hello()
}

這邊先定義一個叫做name的protocol,裡面的有一個叫hello的function

class Greet :Name {

}

Greet class 遵從了Name這個Protocol,但還沒實作hello這個function,這時會產生一個問題

這時Xcode會說你沒完成這個Protocol,是因為還沒實作裡面的function,直接Fix會完成這個實作

class Greet :Name {
    func hello() {
        //code
    }

這邊定義了一個Name的Protocol並實作了裡面的function在Greet的Class裡,這邊就完成了Protocol的應用,相對應的用法也都在UITableViewDataSource裡面,都有需要實作的方法。算是相當常見的應用。


上一篇
Swift-Delegate(2)
下一篇
Swift-ARC自動引數計數(Automatic Reference Counting)
系列文
Swift!從新手到微上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言