DEINIT之前UITapGestureRecognizer函数被调用

问题描述:

我建立一个自定义对话框的应用程序中,我会想使用闭包当用户点击的东西,是所谓的,有点像这样:DEINIT之前UITapGestureRecognizer函数被调用

var modal = ModalDialog(title: "modal title", buttonClick: {() -> Void in 
      println("clicked") 
     }) 

modal.show() 

所以我做了一个叫ModalDialog类中,我有一个UITapGestureRecognizer像这样:

var modalTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("buttonClickAction:")) 
modalView.addGestureRecognizer(modalTap) 

我的问题是,由于ARC,当轻敲实际上是公认的,它试图调用buttonClickAction:类是已经deinitialised和应用程序崩溃。

我会如何去保持ARC从初始化模态直到我明确地告诉它如此做?

在视图控制器中保留对模态对话框的强烈引用。

var dialog : ModalDialog 

    func show { 
     // Keep strong reference dialog by property of your view controller 
     self.dialog = ModalDialog(title: "modal title", buttonClick: {() -> Void in 
      println("clicked") 
     }) 
     self.dialog.show() 
    } 
+0

这是我不知道该怎么办,看过苹果书,它对我没有意义。 ModalDialog在视图控制器类中被调入,但我如何保持对它的强烈引用? – 2014-10-10 10:17:32

+0

编辑答案 – 2014-10-10 10:24:21