UIAlertController在呈现之前获取释放

时间:2016-04-30 10:33:51

标签: ios swift memory-management uialertcontroller

我想制作一个“评分应用”提醒,但出于某种原因,它会在显示之前被取消分配。

以下是代码:

func showAlert() {
    if #available(iOS 8.0, *)
    {
        let alertController = UIAlertController(title: "Rate App", message: "Rate this app now", preferredStyle: .Alert)
        let neverAction = UIAlertAction(title: "Never Show This Again", style: .Destructive, handler: { (action: UIAlertAction) in
            self.userDefaults.setBool(true, forKey: "rateAlertRejected")
        })
        let rateAction = UIAlertAction(title: "Rate Now", style: .Default, handler: { (action: UIAlertAction) in
            // Rate App
        })
        let remindAction = UIAlertAction(title: "Remind Me Later", style: .Cancel, handler: nil)

        alertController.addAction(rateAction)
        alertController.addAction(neverAction)
        alertController.addAction(remindAction)

        presentViewController(alertController, animated: true, completion: nil)
    }
    else
    {
        // Identical code (using UIAlertView) for iOS 7 which works perfectly
    }
}

该方法在自定义展开segue之后执行(在某些条件下,但出于测试目的,它每次都会执行)。

为什么我会遇到这个问题?我之前使用过UIAlertController,但我没有遇到任何问题。

1 个答案:

答案 0 :(得分:1)

根据您的评论,您会在showAlert中显示 在自定义展开segue之后执行的方法。

  

unwind segue解除了视图heriarchy,因此你的警报   没有引用要显示的视图控制器。

要解决此问题,请在展开的View控制器中显示警报,或等待在展开前完成警报控制器操作。