Swift 析构

析构是当类实例不再需要时,对其进行解分配的过程。这会释放系统占用的内存空间。

我们使用 deinit 关键字来创建析构器。例如,

class Race {
  ...

  // create deinitializer
  deinit {
    // perform deinitialization
    ... 
  }
} 

在这里,deinitRace 类的析构器。

在学习析构器之前,请确保您了解 Swift 构造器


示例:Swift 析构器

// declare a class
class  Race {
  var laps: Int

  // define initializer
  init() {
    laps = 5
    print("Race Completed")
    print("Total laps:", laps)
  }

  // define deinitializer
  deinit {
    print("Memory Deallocated")
  }
}

// create an instance
var result: Race? = Race()

// deallocate object
result = nil

输出

Race Completed
Total laps: 5
Memory Deallocated

在上面的例子中:

1. 我们在 Race 类中创建了一个析构器。

deinit {
  print("Memory Deallocated")
}

2. 然后,我们创建了 Race 类的一个实例,并将其分配给一个名为 resultRace 类型变量。

// create an instance
var result: Race? = Race()

这里,Race? 表示 result 是一个 可选类型,因此它可以存储两种类型的值:

  • 类型为 Race 的值。
  • nil 值。

3. 最后,我们将 nil 分配给 result

// deallocate instance
result = nil

这将解分配该实例。析构器在类实例被解分配之前被自动调用。并且它里面的语句会被执行。

注意:

  • 在 Swift 中,我们只在需要手动解分配实例时才使用析构器。否则,Swift 会自动进行解分配。
  • 析构器只能用于类,不能用于结构体。
  • 每个类只能有一个析构器。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战