Утечка Root Leak. В этом изображении несколько раз вызывается в одной строке, но есть еще одно ниже, которое называется одноразовым, а также вызывает утечку.
Это стек вызовов после вызова строки кода, указанной ранее.
Это класс, где утечка находится на инструментах:
class Item {
var id: String!
var name: String!
internal init(name: String) {
self.name = name
self.id = name
}
var description: String {
return "(\(id)) \(name)"
}
}
Утечка обнаруживается в строке вычисленной переменной description, содержащей return "(\(id)) \(name)"
, и она решается после изменения описания на:
var description: String {
return "(" + id + ") " + name
}
Update:
или
var description: String {
if let id = self.id as? String, let name = self.name as? String {
return "(\(id)) \(name)"
}
return "NO AVAILABLE DESCRIPTION"
}
Последний издает "Условный отбор из" Строка! "для String всегда удается".
Итак, даже это выглядит как хак.
Почему это вызывает утечку?