Fix memory leaks

This commit is contained in:
Ali
2023-10-31 17:56:10 +04:00
parent 70e9a7e8e5
commit 2430d2b7bc
2 changed files with 15 additions and 10 deletions

View File

@@ -50,11 +50,11 @@ final class NetworkStatsContext {
private final class Impl {
let queue: Queue
let postbox: Postbox
weak var postbox: Postbox?
var averageTargetStats: [TargetKey: AverageStats] = [:]
init(queue: Queue, postbox: Postbox) {
init(queue: Queue, postbox: Postbox?) {
self.queue = queue
self.postbox = postbox
}
@@ -86,12 +86,14 @@ final class NetworkStatsContext {
var removeKeys: [TargetKey] = []
for (targetKey, averageStats) in self.averageTargetStats {
if averageStats.count >= 1000 || averageStats.size >= 4 * 1024 * 1024 {
addAppLogEvent(postbox: self.postbox, type: "download", data: .dictionary([
"n": .number(Double(targetKey.networkType.rawValue)),
"d": .number(Double(targetKey.datacenterId)),
"b": .number(averageStats.networkBps / Double(averageStats.count)),
"nd": .number(averageStats.networkDelay / Double(averageStats.count))
]))
if let postbox = self.postbox {
addAppLogEvent(postbox: postbox, type: "download", data: .dictionary([
"n": .number(Double(targetKey.networkType.rawValue)),
"d": .number(Double(targetKey.datacenterId)),
"b": .number(averageStats.networkBps / Double(averageStats.count)),
"nd": .number(averageStats.networkDelay / Double(averageStats.count))
]))
}
removeKeys.append(targetKey)
}
}
@@ -109,7 +111,7 @@ final class NetworkStatsContext {
init(postbox: Postbox) {
let queue = NetworkStatsContext.sharedQueue
self.queue = queue
self.impl = QueueLocalObject(queue: queue, generate: {
self.impl = QueueLocalObject(queue: queue, generate: { [weak postbox] in
return Impl(queue: queue, postbox: postbox)
})
}