最近幾天在學習swift的語法,在看到swift的官方教程對於代理的介紹時給的示例代碼比較複雜所以產生了一個仿照OC中對於代理傳值的使用方法寫個簡單易懂的示例方便學習:
首先寫個協議,這個協議只有一個方法用於獲取值
protocol TransmitDelegate {
func successTransimt(random:Double)
}
然後寫個類這個類實現了這個協議(用獲取的值實現一些業務邏輯):
class Realize:TransmitDelegate{
func successTransimt(random: Double) {
print("打印隨機數:\(random)")
}
}
最後還有一個類這個類會產生一些數據(比如說網絡請求得到一些數據),然後希望其他的類可以處理這些數據(列如:Realize這個類)
class CreateRandom {
var lastRandom = 42.0
let m = 123345.0
let a = 2344.0
let c = 24543.0
var delegate:TransmitDelegate?
func random() -> Double {
lastRandom = ((lastRandom * a + c)%m)
delegate?.successTransimt(lastRandom)
return lastRandom/m
}
}
最後看看使用方法:
let testRandom = CreateRandom()
testRandom.delegate = Realize()
testRandom.random()
OK,就是這麼簡單。有過OC開發經驗的應該一眼看過去就懂了。