Swift 協議(protocol)的理解與使用

1.協議是用來幹嗎的?ide

    協議是用能夠用來給枚舉,結構體,類添加屬性,方法,下標添加聲明的東西ui

2.協議的使用與注意點cdn

協議既然是(屬性,方法,下標)一種聲明,就不會有(屬性,方法,下標)實現。對象

    2.1 定義一個含有屬性,方法,下標的協議blog


    由於協議只會定義申明,暫時沒有實現,因此屬性和下標都是沒有默認值的,要改變屬性的值。天然只能用var。而實現協議的對象要給屬性賦值取值,天然須要經過set,get來定義。若是隻須要取值使用get便可。get

    2.2 協議的實現以及使用(協議是一種類型)it


協議的屬性能夠成爲存儲屬性和計算屬性

當咱們使用協議的方式初始化的話🤔️

當咱們使用類的形式初始化

當咱們使用協議的方式初始化的時候,協議裏面定義了set,咱們才能給屬性賦值。當咱們以對象類型去建立的話,由於對象自己默認就有set和get,因此咱們即便去掉了協議的set,咱們也能給屬性賦值        io

2.3 static和class的使用class

    咱們能夠給協議裏面的方法,屬性,下標添加關鍵字,這樣咱們能夠經過對象直接訪問屬性 require

2.4 在協議中定義初始化器init


在協議中定義初始化器

    咱們能夠在協議中定義初始化器。而後在對應的枚舉,結構體,類中使用它。值得注意的是在類中使用初始化器須要使用required來修飾,結構體和枚舉不須要


類實現協議的初始化器須要required修飾

    


結構體和枚舉不須要

枚舉能夠直接使用協議的初始化器

2.5 mutating的使用 

當枚舉或者結構體想要在協議定義的方法裏面修改捕捉到的外部變量的值時,咱們須要給協議定義的方法添加mutating,記住只有枚舉和結構體才須要,類不須要

2.6 當父類和協議有相同的初始化器

咱們須要在使用初始化器的時候在初始化器上添加override和required。

相關文章
相關標籤/搜索