Wie deklariert man ein Array von schwachen Referenzen (weak references) in Swift?
Hallo zusammen! Ich bin neu in Swift und versuche, die Speicherverwaltung zu verstehen. Ich habe eine Klasse `Delegate`, die als Delegate für mehrere Objekte verwendet wird. Ich möchte eine Liste dieser Delegates in einem Array speichern, aber ich möchte nicht, dass das Array sie stark referenziert, sonst entstehen Speicherlecks oder zyklische Referenzen.
In Objective-C habe ich `NSPointerArray` mit der Option `NSPointerFunctionsWeakMemory` verwendet. Aber in Swift kann ich nicht einfach `weak var delegates: [Delegate]` schreiben – der Compiler gibt einen Fehler aus: `'weak' may only be applied to class and class-bound protocol types, not array`.
Hier ist ein Beispiel meines Codes:
```swift
class Delegate {
weak var owner: SomeClass?
func didSomething() { }
}
class SomeClass {
// Wie mache ich dieses Array schwach?
var delegates: [Delegate] = []
func addDelegate(_ delegate: Delegate) {
delegates.append(delegate)
}
}
```
Ich habe über `NSPointerArray` und `NSHashTable` gelesen, aber sie arbeiten mit `AnyObject` und scheinen nicht...
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Geheimnisse von C#, über die die Dokumentationen schweigen: Best Practices 2025
Decimal vs Double in C#: Was wählen und wann? Leitfaden 2025
Refactoring von PHP-Code: Wann es nötig ist und wie man es macht
Funktionen als Argumente in Rust: 3 Wege zur Übergabe