我正在为一个应用程序构建一个自定义对话框,在该对话框中,我希望使用在用户点击某个内容时调用的闭包,类似于:

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)

我的问题是,由于弧形,当实际识别出tap并尝试调用buttonClickAction:时,类已经被取消初始化,应用程序崩溃。
在我明确告诉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()
    }

10-04 16:27