美文网首页
构造过程和析构过程

构造过程和析构过程

作者: 奔跑的_猿 | 来源:发表于2017-03-10 08:50 被阅读0次

构造过程

  • 构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务。
    Swift 构造函数使用 init() 方法。
    与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。
    类实例也可以通过定义析构器(deinitializer)在类实例释放之前执行清理内存的工作。
  • 存储型属性的初始赋值
    类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值。
    存储属性在构造器中赋值时,它们的值是被直接设置的,不会触发任何属性观测器。
    存储属性在构造器中赋值流程:
    创建初始值。
    在属性定义中指定默认属性值。
    初始化实例,并调用 init() 方法。
    构造器
    构造器在创建某特定类型的新实例时调用。它的最简形式类似于一个不带任何参数的实例方法,以关键字init命名。
    语法
init()
{
    // 实例化后执行的代码
}

析构过程

  • 在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。
  • 析构过程原理
    Swift 会自动释放不再需要的实例以释放资源。
    Swift 通过自动引用计数(ARC)处理实例的内存管理。
    通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。
    例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前关闭该文件。
    析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数
    语法
    在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:
deinit {
    // 执行析构过程
}
  • 和OC中的dealloc 一样的,通常在deinit和dealloc中需要执行的操作有:
  1. 对象销毁
  1. KVO移除
  2. 移除通知
  3. NSTimer销毁

相关文章

网友评论

      本文标题:构造过程和析构过程

      本文链接:https://www.haomeiwen.com/subject/porwgttx.html