Есть ли способ найти владельца осиротевшего объекта на iOS? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытался выяснить, как найти то, что удерживает этот объект.Но, кажется, ничто больше не ссылается на него, так как же оно все еще сохраняется?Это проявляется как утечка в обоих инструментах и ​​отладчике памяти.

Возможно ли, что для отладчика памяти что-то не символизирует, чтобы выяснить, что же это сохраняет?Что могло бы привести к тому, что объект стал бы таким же?

Примечания: я использую область, но этот объект не связан напрямую с областью.(Просто используя префикс RLM для этого конкретного объекта).Notice the lone object.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Это было сложно, но я думаю, что нашел ответ.Итак, у меня есть универсальный массив AnyObjects ([AnyObject]), и я «знаю», что это значения Hashable.У меня была концепция, что я мог бы сделать: objects as! AnyHashable

Это компилируется и, кажется, работает, но это фактически вызывает утечку памяти!Я предполагаю, что внутри Свифта что-то происходит внутри, чтобы вызвать это.Возможно я могу поместить это в ограниченный файл, чтобы доказать, что это утечка.Ничего не просачивается, если я передаю каждое значение Hashable в AnyHashable (объект).

К сожалению, мне все еще нужно найти способ заставить мои общие значения AnyObject быть Hashable.

0 голосов
/ 22 февраля 2019

Возможно, ваш объект сохраняет себя.Это легко случается при использовании замыканий.Удостоверьтесь, что явно аннотируете себя как слабого в своих замыканиях, как это:

someFunc() { [weak self] in
    // some code
    self?.propertyOnSelf
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...