我使用这个简单的代码
呈现一个简单的UIViewController@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。但当我点击取消按钮解除控制器泄漏工具发现泄漏时,如图所示:
我试过在处理程序参数中添加这样的闭包:
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 :(得分:1)
UIViewController
有很多陷阱。
Ash Furrow解决了这个blog post中的许多内存问题。他尝试了弱自我,但决定使用一个局部变量,然后在闭包中使用。