# ARC 原理介绍

URL: https://caijiao.org/swift/12-memory-arc/01-arc-overview
Source: docs/swift/12-memory-arc/01-arc-overview.md
Description: 本章介绍 Swift 中自动引用计数（ARC）的基本原理，帮助开发者理解内存管理机制，避免内存泄漏。

自动引用计数（ARC）是 Swift 管理内存的机制，自动跟踪和管理对象的引用次数，决定对象的生命周期。

## 工作原理

- 每当创建新实例时，ARC 会增加该实例的引用计数。
- 当引用计数为零时，ARC 自动释放对象，释放内存。

## 引用计数示例

```swift
class Person {
    let name: String
    init(name: String) {
        self.name = name
        print("\(name) 初始化")
    }
    deinit {
        print("\(name) 被释放")
    }
}

var person1: Person? = Person(name: "小明")
var person2 = person1
person1 = nil
person2 = nil  // 此时引用计数为0，对象被释放
````

## 注意事项

* ARC 仅管理类实例的内存，结构体和枚举是值类型，不受 ARC 管理。
* 循环引用会导致内存泄漏，需使用弱引用（weak）或无主引用（unowned）解决。

## 总结

理解 ARC 有助于写出高效且安全的 Swift 代码，避免内存泄漏和野指针问题。
