(iOS) Странные утечки памяти на словаре [закрыто]IOS

Программируем под IOS
Ответить
Anonymous
 (iOS) Странные утечки памяти на словаре [закрыто]

Сообщение Anonymous »

Я получаю странную утечку памяти, как ниже. src="https://i.sstatic.net/6HWgfk8B.png" />
Изображение

The code about MessageImageLoader looks Как ниже.

Код: Выделить всё

class SomeView: UIView {
let listView = ListView()

func update(with data: SomeData) {
listView.update(with: data)
}
}

class ListView: UIView {
private var imageLoaders: [MessageImageLoader] = []

func update(with data: SomeData) {
imageLoaders.removeAll()

data.ids.forEach {
let imageLoader = MessageImageLoader(imageInfo: ["...": $0.sth]) // this point is captured by stack trace

imageLoaders.append(imageLoader)
imageLoader.load { [weak self] _ in // this point is captured by stack trace
self?.imageLoaders.remove(imageLoader)
}
}
}
}

class MessageImageLoader {
// ...

func load(completion: @escaping (UIImage?) -> Void) {
Task { [weak self] in // this point
guard let self else { return }
// a bunch of await call inside
// some await call is captured by stack trace
// and the completion is called finally.
}
}
}

Ячейка представления таблицы имеет Someview и самостоятельно используется, поэтому MessageImageLoader Загрузка может быть вызван много раз.
Я должен отменить задачу перед повторным использованием?

Код: Выделить всё

imageInfo
) и задачи просочиваются? Таким образом, задание не может быть сделано. Но я не могу сделать это прямо сейчас, потому что он где -то много используется. Если вы думаете, что это причина, я сразу же меняю. Я добавлю замечания в приведенном выше коде о том, какая точка фиксируется сначала Trace Traze очень. src = "https://i.sstatic.net/eaerrtzv.png"/>

p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p> p>. src = "https://i.sstatic.net/jvck6p2c.png"/>


Подробнее здесь: https://stackoverflow.com/questions/797 ... dictionary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»