// lazy.swift
import Foundation
class lazy: NSObject {
//如果外部不使用的话就加载好了
var arr1:[String] = ["1","2","3","4"]
//如果外部不使用就不加载
lazy var arr:[String] = {
let temp = ["1","2","3","4"]
return temp
}()
lazy var dic:[String:[String]] = {
let dic = ["Y":["鱼","yyy"],"choubi":["何帅","dafae"],"lowB":["邱宗旺","dasdxz"]]
return dic
}()
}
// leader.swift
import Foundation
/*
协议
protocol 协议名{
}
*/
protocol HouseWork{
//协议(主人想找个仆人干的事情),只写方法名(具体的实现听主人)
func washClose()
func cearBaby()
}
// leader是主人的身份
class leader: NSObject {
//定义一个代理:需要一个仆人,这个仆人要做的事情
//格式:var delegate:协议名?
var delegate:HouseWork?
func doHouseWork(time:String){
if time == "晚上" {
//谁的代理去做某一件事情
leader.delegate?.cearBaby()
}
else if time == "中午"{
leader.delegate?.washClose()
}
else {
println("随便")
}
}
}
// waite.swift
import Foundation
//waite是仆人的身份
class waite: NSObject {
}
/*
遵守协议,并且实现协议里面的方法
格式
extenion 本类名:协议名{
实现协议里面的方法
}
*/
extension waite:HouseWork{
func washClose() {
println("洗衣服")
}
func cearBaby() {
println("带孩子")
}
}
// main.swift
import Foundation
//懒加载:数据等到使用的时候判断数据是否创建过,如果加载过则拿来使用,如果没有则加载再使用
//使用懒加载的好处,可以加速编译阶段,提高代码运行效率
/*
lazy var 变量名:变量的数据类型 = {
let出来一个同样数据类型的数据,最后return出来
}()
*/
let lazy1 = lazy()
println(lazy1.dic)
//代理(保姆:能帮你做一些事情)-协议(保姆能帮你做的事情:洗碗,洗衣服,带小孩。。。)
//仆人
let waite0 = waite()
//主人
let leader0 = leader()
//主人 找了仆人,设置代理。只要设置了代理,就要遵守协议
leader0.delegate = waite0
leader0.doHouseWork("中午")