IOS 筆記6(拓展,協議)

2021-07-04 16:25:28 字數 1551 閱讀 8069

extensions

使用這個可以給現存的類,結構體和列舉新增屬性和方法,屬性的話只能新增計算屬性。現有的屬性和方法不可以被複寫。可以很簡單的新增一些小方法,也可以用來構建整個軟體的構架。

protocol

這是乙個資料型別,但是他只有宣告沒有實現。實現由使用這個協議的類和列舉和結構體來實現。

協議可以繼承。

在寫協議的時候,宣告屬性時需要通過set,get來指定這個屬性的可讀和可寫性。會改變接收者值的函式則需要加上mutating關鍵字。通過宣告init方法還可以規定協議實現者實現規定的初始化方法,這時要注意在實現時(類)要加上required關鍵字。

這裡宣告乙個協議:

protocol moveable
在宣告乙個協議時,使用self來作為變數的型別,在實現時就可以在這裡使用實現這個協議的型別

但要注意這時實現要使用范型

protocol ordered
原來這樣實現時就不行了

func binarysearch(sortedkeys: [ordered], forkey k: ordered) -> int
得這樣實現

func binarysearch(sortedkeys: [t], forkey k: t) -> int

乙個實現它的類:

class car : moveable //這裡並不需要加mutauing

func changeoil()

}

乙個實現它的結構體:

struct shape : moveable 

func draw()

}

初始化兩個例項:

let prius: car = car()

let square: shape = shape()

var thingtomove: moveable = prius//乙個協議型別的變數,可以被乙個實現了這個協議的例項賦值

thingtomove.moveto(...)//可以呼叫例項物件中實現的協議的方法

thingtomove.changeoil()//這個方法則呼叫不了,即使這個類裡確實有這個方法

我還可以這樣定義乙個陣列:

let thingstomove: [moveable] = [prius, square]//雖然他們乙個是類乙個是結構體
還可以將協議用做引數:

func slide(slider: moveable) 

slide(prius)

slide(square)

當引數需要滿足多個協議時:

func slideandslide(x: protocol)

slideandslide(prius)//這時這句話就會報錯了

HTTP協議學習 (十)拓展 HTTPS協議

https hypertext transfer protocol over secure socket layer,基於ssl的http協議 使用了http協議,但https使用不同於http協議的預設埠及乙個加密 身份驗證層 http與tcp之間 客戶端在使用https方式與web伺服器通訊時有...

iOS開發拓展篇 CoreLocation簡單介紹

一 簡介 1 導航 去任意陌生的地方 2 周邊 找餐館 找酒店 找銀行 找電影院 2.在上述應用中,都用到了地圖和定位功能,在ios開發中,要想加入這2大功能,必須基於2個框架進行開發 1 map kit 用於地圖展示 2 core location 用於地理定位 3.兩個熱門專業術語 1 lbs ...

iOS開發拓展篇 CoreLocation簡單介紹

ios開發拓展篇 corelocation簡單介紹 一 簡介 1 導航 去任意陌生的地方 2 周邊 找餐館 找酒店 找銀行 找電影院 2.在上述應用中,都用到了地圖和定位功能,在ios開發中,要想加入這2大功能,必須基於2個框架進行開發 1 map kit 用於地圖展示 2 core locatio...