教程 swift tutorial

引用计数与内存管理

Swift 使用自动引用计数(ARC)管理内存,自动追踪和释放不再使用的类实例。

引用计数基础

每当创建类实例,ARC 会增加引用计数;每当引用被释放,计数减少;计数为零时,实例被销毁。

swift
class Person {
    let name: String
    init(name: String) {
        self.name = name
        print("\(name) 被初始化")
    }
    deinit {
        print("\(name) 被销毁")
    }
}

var p1: Person? = Person(name: "小明")
var p2 = p1
p1 = nil
p2 = nil  // 此时 Person 实例被销毁

`

循环引用(Retain Cycle)

两个实例互相强引用,导致内存无法释放。使用弱引用(weak)和无主引用(unowned)打破循环。

swift
class A {
    var b: B?
    deinit { print("A 被销毁") }
}

class B {
    weak var a: A?
    deinit { print("B 被销毁") }
}

var a: A? = A()
var b: B? = B()
a?.b = b
b?.a = a
a = nil
b = nil  // 双方正确释放

理解 ARC 和引用计数,有助于写出高效、无内存泄漏的 Swift 代码。