# 弱

**弱引用修饰符:不持有对象,目标释放后自动变 `空`。**

```xuantie
型 子节点 {
    弱 设 父: 父节点?
}
```

## 你可以……

- **打破循环引用**——父强引用子、子弱引用父,ARC 不再互相锁死:

```xuantie
型 父节点 {
    设 子列表: 数组<子节点>
}
型 子节点 {
    弱 设 父: 父节点?
}
```

- **声明局部弱引用变量**——`弱 设`,对象释放后自动归零:

```xuantie
设 强引用 = "数据"
弱 设 观察者 = 强引用
强引用 = "新对象"       // 唯一强引用被覆盖
示("观察者: #{观察者}") // 空
```

- **在构造里给弱引用字段赋值**——不增加引用计数:

```xuantie
型 子节点 {
    弱 设 父: 父节点?
    函 造(p) { 此.父 = p }
}
```

## 注意

- 弱引用字段的类型应带 `?`(可空),否则编译器给出 W005 警告(严格模式升级为错误)。
- 弱引用指向的对象随时可能释放变 `空`,使用前需判空。
- 闭包弱捕获 `函() [弱 此] { ... }` 尚未实现。

## 相关

[型](型.md) · [口](口.md) · [此](此.md)