Отлавливаем memory leaks


#1

Всем привет!

Такой вопрос, я конечно понимаю, что Swift ультра безопасный язык с сборщиком мусора и автоматическим подсчетом ссылок, но проблемы все таки возникают.

Отсюда вопрос, как вы отслеживаете утечки? Я делал это очень тривиально, используя deinit, и смотрел уничтожается объект или нет, может ваш способ более элегантен!?)

С какими проблемами сталкивались, у меня помимо strong reference cycle(решается невероятно просто, если кто не знает, просто используете слабые или бесхозные ссылки) ничего пока серьезно ге было, но может вам есть чем поделиться, так сказать, передать опыт!

Я пока не имею опыта работы с unit test-ми, но думаю одна из их задач, отслеживание таких проблем?!(Хотя если брать в учет, что человек сам пишет тесты, то что напишет то и будет, глупый вопрос, но мало ли я ошибаюсь!)
ess
Можно понять о существование утечки с помощью xCode в debug session??

Пожалуй все, если есть что добавить, тоже пишите, интересно ведь!


#2

Это самое серьёзное)

В instruments есть leaks, как раз для таких целей:

И в xcode есть memory graph debugger:

Цикл сильных ссылок выглядет там так:

Нет, тесты вообще про другое.


#3

Спасибо, полезная информация, а то я сколько пишу, ни разу не пользовался!


#4

В Swift есть подсчет ссылок, но сборщика мусора в классическом понимании (Java, C#, Objc до АРКа) - нету.


#5

В objc нет garbage collector🤷🏻‍♂️


#6

Так я так и пишу. В objc до арка (вернее, даже до mrc) он был. И в документации иногда про него всплывает.


#7

Не застал видимо ………


#8

И хорошо) Ужасное время было. Хотя и MRC была той еще дрянью.