【swift基础】08在swift如何使用闭包、懒加载、和自定义类

原创 2016年06月02日 11:15:57

闭包

  • 闭包定义
  • 闭包简化 - 尾随闭包
  • 闭包参数
  • 闭包返回值
  • 闭包的循环引用
weak var weakSelf = self
demo("zhangsan") { (_) -> Int in
    print(weakSelf?.view.backgroundColor)

    return 20
}

懒加载

lazy var demoView: UIView = {

    let v = UIView(frame: CGRectMake(10, 10, 100, 100))
    v.backgroundColor = UIColor.redColor()

    return v
}()
  • 格式:
lazy var 变量: 类型 = { 创建变量代码 }()
  • 懒加载的写法本质上是定义并执行一个闭包

getter & setter

自定义 Person 类

class Person: NSObject {

    var name: String?
    var age: Int?
}

getter & setter

var _name: String?

var name: String? {
    get {
        return _name
    }
    set {
        _name = newValue
    }
}
  • Swift 中以上形式的 getter & setter 很少用

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 ?? "")
}

构造函数

init(dict: [NSObject: AnyObject]) {
    name = dict["name"] as? String
    age = dict["age"] as? Int
}

析构函数

deinit {
    print("88")
}
版权声明:本文为博主“C吖个汉”原创文章,未经博主允许不得转载。

IOS_Swift_深入理解闭包 对比懒加载和普通赋值的区别

定义一个字符串的变量的方法:  //直接赋值 var str="JobDeer" //闭包方式 var str:String={ return "JobDeer" }() //简化闭包,省略了等号...

Swift中闭包,懒加载,单例的写法区别

Swift中闭包,懒加载,单例的写法区别
  • cuin123
  • cuin123
  • 2015年12月06日 23:19
  • 276

五、swift3.0闭包和懒加载

一、懒加载 二、UITableView的使用 三、
  • cwhzm
  • cwhzm
  • 2017年06月18日 11:27
  • 407

swift地图定位(十)自定义定位工具类(从代理模式到闭包模式)

LocationTool.swift import UIKit import CoreLocation typealias LocationResultBlock = (_ loc: CLLo...
  • callzjy
  • callzjy
  • 2016年11月14日 19:44
  • 333

Swift--08闭包使用

函数实际上是一种特殊的闭包:它是一段能之后被调取的代码。闭包中的代码能访问闭包所建作用域中能得到的变量和函数,即使闭包是在一个不同的作用域被执行的。你可以使用{}来创建一个匿名闭包。使用 in 将参数...

swift自学笔记(四)(懒加载、存储属性、计算属性、类属性、属性监听)

// ****懒加载 class Dog {     var name:String  = "tom"     var age:Int = 5 } cla...
  • iOS_Pop
  • iOS_Pop
  • 2016年01月27日 09:43
  • 867

学校学习ios教程笔记,第七节swift中的类与对象的属性和懒加载

// // main.swift // 类和对象 // // Created by lanou on 16/10/27. // Copyright (c) 2016年 lanou. ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【swift基础】08在swift如何使用闭包、懒加载、和自定义类
举报原因:
原因补充:

(最多只允许输入30个字)