自定义 Subscribable class 中的内存泄漏
Memory leaking in custom Subscribable class
在项目中实现自定义Subscribable
class后
我在应用程序中收到内存泄漏。
代码 class.
open class Subscribable<T> {
private var _value: T?
private var _subscribers: [(T?) -> Void] = []
open var value: T? {
get {
return _value
}
set {
_value = newValue
for f in _subscribers {
f(value)
}
}
}
public init(_ value: T?) {
_value = value
}
open func subscribe(_ subscribe: @escaping (T?) -> Void) {
if let value = _value {
subscribe(value)
}
_subscribers.append(subscribe)
}
}
我假设 _subscribers
将持有对数组的强引用。
我相信默认情况下属性带有 strong 引用。
不指定 weak 或 unowned 可能会产生引用循环。
数组中的项也有来自该数组的强引用。
你可能想看看这个
https://marcosantadev.com/swift-arrays-holding-elements-weak-references/
在项目中实现自定义Subscribable
class后
我在应用程序中收到内存泄漏。
代码 class.
open class Subscribable<T> {
private var _value: T?
private var _subscribers: [(T?) -> Void] = []
open var value: T? {
get {
return _value
}
set {
_value = newValue
for f in _subscribers {
f(value)
}
}
}
public init(_ value: T?) {
_value = value
}
open func subscribe(_ subscribe: @escaping (T?) -> Void) {
if let value = _value {
subscribe(value)
}
_subscribers.append(subscribe)
}
}
我假设 _subscribers
将持有对数组的强引用。
我相信默认情况下属性带有 strong 引用。
不指定 weak 或 unowned 可能会产生引用循环。
数组中的项也有来自该数组的强引用。
你可能想看看这个
https://marcosantadev.com/swift-arrays-holding-elements-weak-references/