懒加载
在 iOS 开发中,懒加载是无处不在的
- 懒加载的格式如下:
lazy var demoView: UIView = {
let v = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
v.backgroundColor = UIColor.redColor()
return v
}()
- 懒加载本质上是一个闭包
- 以上代码可以改写为以下格式
let demoLazy = { () -> UIView in
let v = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
v.backgroundColor = UIColor.redColor()
return v
}
lazy var demoView: UIView = self.demoLazy()
- 懒加载的简单写法
lazy var dataList = [String]()
getter & setter
- 在 Swift 中
getter & setter
很少用
var _name: String?
var name: String? {
get {
return _name
}
set {
_name = newValue
}
}
didSet
- 在 OC 中,我们通常希望在给某一个变量赋值之后,去做一些额外的操作
- 最经典的应用就是在自定义 Cell 的时候,通过模型的设置方法完成 Cell 的填充
var length: Int? {
didSet {
timeStr = String(format: "%02d:%02d:%02d", arguments: [length! / 3600, (length! % 3600) / 60, length! % 60])
}
}
var timeStr: String?
计算型属性
var title: String {
get {
return "Mr " + (name ?? "")
}
}
- 只实现 getter 方法的属性被称为计算型属性,等同于 OC 中的 ReadOnly 属性
- 计算型属性本身不占用内存空间
- 不可以给计算型属性设置数值
- 计算型属性可以使用以下代码简写
var title: String {
return "Mr " + (name ?? "")
}