2015-06-05 3 views
3

я представляю простой UIViewController с помощью этого простого кодаУтечка памяти с использованием UIAlertController в Swift

@IBAction func addNewFeed(sender: UIBarButtonItem) 
{ 

    var alertView: UIAlertController? = UIAlertController(title: NSLocalizedString("New Feed", comment: "Titolo popup creazione feed"), 
     message: NSLocalizedString("Insert the Title and the Link for the new Feed.", comment: "Messaggio creazione nuovo feed"), 
     preferredStyle: UIAlertControllerStyle.Alert) 


    alertView!.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "Annulla popup creazione nuovo feed"), 
     style: UIAlertActionStyle.Cancel, 
     handler: nil)) 

    presentViewController(alertView!, animated: true, completion: nil) 

} 

Когда я нажать кнопку на моем интерфейсе я называю это кажется IBAction и UIAlertController. Но когда я нажимаю на кнопку Отмена, чтобы закрыть контроллер Leak Tool нашли утечку, как вы можете видеть на этом изображении:

enter image description here

Я попытался положить закрытия, как это в параметре обработчика:

alertView!.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "Annulla popup creazione nuovo feed"), 
     style: UIAlertActionStyle.Cancel, 
     handler: {[weak self] action in self!.dismissViewControllerAnimated(true, completion: nil) 
     alertView = nil 
     })) 

но всегда есть утечка.

+0

Похоже, что это ошибка iOS. Проверьте [этот вопрос.] (Http://stackoverflow.com/questions/26247221/ios-8-only-memory-leak-with-uialertcontroller-or-uiactionsheet/30312928#30312928) – aksh1t

ответ

1

UIViewController имеет множество ловушек, которые нужно упасть.

Ash Furrow адресует многие проблемы с памятью в этом blog post. Он пробовал слабое «я», но решил использовать локальную переменную, которая затем используется в закрытии.

Смежные вопросы