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

@@ -1524,7 +1524,10 @@ public func standaloneStateManager(
|> map { network -> AccountStateManager? in |> map { network -> AccountStateManager? in
Logger.shared.log("StandaloneStateManager", "received network") Logger.shared.log("StandaloneStateManager", "received network")
postbox.mediaBox.fetchResource = { resource, intervals, parameters -> Signal<MediaResourceDataFetchResult, MediaResourceDataFetchError> in postbox.mediaBox.fetchResource = { [weak postbox] resource, intervals, parameters -> Signal<MediaResourceDataFetchResult, MediaResourceDataFetchError> in
guard let postbox else {
return .never()
}
if let result = auxiliaryMethods.fetchResource( if let result = auxiliaryMethods.fetchResource(
postbox, postbox,
resource, resource,

View File

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