您的位置:首页 > 移动开发 > Swift

IOS中的Swift基础(懒加载,代理协议)

2016-10-28 09:12 316 查看
//  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("中午")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios swift