У меня утечка памяти при настройке UIAlertController
, я видел другие потоки, говорящие об утечках памяти в UIAlertController
.Но я не мог понять, как изменить свой код, чтобы утечка памяти прошла.Я изменил itemSelected
с функции на вычисляемое свойство, но это ничего не изменило.
protocol TriggerUIAlertController: class where Self: UIView {
var itemsForPresenting: [String] { get }
var titleForCancel: String { get }
var titleForAlertController: String { get }
var itemSelected: Int? {get set}
}
extension TriggerUIAlertController {
func triggerUIAlerController() {
let alertList = UIAlertController(title: titleForAlertController, message: nil, preferredStyle: .actionSheet)
let closure = { (alert: UIAlertAction!) -> Void in
let index = alertList.actions.index(of: alert)
guard index != nil else {
return
}
///produces memory leak, idk why though -> has to be checked
self.itemSelected = index!
}
for x in itemsForPresenting {
alertList.addAction(UIAlertAction(title: x, style: .default, handler: closure))
}
self.window?.rootViewController?.present(alertList,animated: true, completion: nil)
let cancelAction = UIAlertAction(title: titleForCancel, style: .cancel, handler: nil)
alertList.addAction(cancelAction)
}
}
Кстати: это нормально, что инструменты используют после пяти минут использования в общей сложности 50 ГБ оперативной памяти?