如何在Swift中声明弱引用数组?
大家好!我是Swift新手,正在尝试理解内存管理。我有一个`Delegate`类,用作多个对象的委托。我想将这些委托存储在一个数组中,但不想让数组持有它们的强引用,否则会导致内存泄漏或循环引用。
在Objective-C中,我使用了带有`NSPointerFunctionsWeakMemory`选项的`NSPointerArray`。但在Swift中,我不能直接写`weak var delegates: [Delegate]`——编译器会报错:`'weak' may only be applied to class and class-bound protocol types, not array`。
以下是我的代码示例:
```swift
class Delegate {
weak var owner: SomeClass?
func didSomething() { }
}
class SomeClass {
// 如何使这个数组成为弱引用?
var delegates: [Delegate] = []
func addDelegate(_ delegate: Delegate) {
delegates.append(delegate)
}
}
```
我读过关于`NSPointerArray`和`NSHashTable`的内容,但它们操作的是`AnyObject`,而且似乎不太...