Day09-Protocol, Delegate, Extension

今天的主題是protocal, delegate以及extension,剛開始在介紹protocal的時候就覺得有點熟悉,稍微查了一下才發現原來類似Java中的interface,那至於delegate就有點難理解了,以下面這段CODE來說明。

簡而言之,Delegate (代理人)用於處理對象的事件回調與操作,例如選取儲存格、編輯儲存格等。此外,Delegate 也可以用於定制對象的顯示方式、額外設定、互動操作等。那常和delegate一起比較說明的是DataSource,DataSource 通常用於提供對象的資料,包括區段數量、行數量、儲存格內容等。

回到protocal,他是可以宣告property的,不過只能宣告computed property,因為computed property也算是function的一種。Protocal一夜可以當作一種型別,也不能被實體化(new)。

中間也有提到轉型(type casting),強制轉型(as!),看到驚嘆號就知道使用時會比較危險,還是建議是用比較安全的(as?),那如果一定轉型成功的(子類別轉父類別)可直接使用(as),型別的比較是使用(is)。中間也介紹了Any(Class,Struct)跟AnyObject(Class)的區別。

最後講到extension,主要用來擴充class,struct,protocal以及enum的能力,通常定義function跟computed property,不可以定義stored property。

課程也默默進行到了後半段,雖然上課的時候聽老師講的內容大部分都聽得懂,不過實際還是要靠自己課後去練習才會比較熟悉!

--

--