Вопрос проверяет навыки диагностики и устранения утечек памяти.
Используйте Instruments (Leaks, Allocations).
Ищите retain cycles (особенно в замыканиях и делегатах).
Проверьте weak/unowned ссылки.
Шаги диагностики:
Instruments:
Leaks: Показывает прямые утечки.
Allocations: Анализирует рост памяти.
Циклы удержания:
Проверьте связи между объектами (делегаты, замыкания).
Weak/Unowned:
Замените сильные ссылки на слабые где возможно.
Пример кода с проблемой:
class Server {
var handlers: [() -> Void] = []
func addHandler(_ handler: @escaping () -> Void) {
handlers.append(handler) // Утечка, если handler захватывает `self`
}
}Вывод:
Инструменты Xcode — ключ к поиску утечек. Всегда проверяйте retain cycles.