Avatar ·

如何在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`,而且似乎不太...