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...