In meinem iOS-App Ich habeSwift beibehalten Zyklen
class Node {
var value: String
var isExpanded: Bool
var children: [Node] = []
private var flattenElementsCache: [Node]!
// init methods
var flattenElements: [Node] {
if let cache = flattenElementsCache {
return cache
}
flattenElementsCache = []
flattenElementsCache.append(self) // (1) <-- Retain Cycle???
if isExpanded {
for child in children {
flattenElementsCache.append(contentsOf: child.flattenElements)
}
}
return flattenElementsCache;
}
}
mit Instrumenten, ich habe einige Speicherlecks beobachtet, und ich denke, das Problem in Zeile (1) angegeben ist.
Könnte jemand mir erklären, wenn es ein Zyklus beibehalten erzeugt? Wenn ja, wie lösen Sie es?