当前位置: 首页 > 工具软件 > Lazy > 使用案例 >

11-lazy

充阳秋
2023-12-01

懒加载

在 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 ?? "")
}
 类似资料: