我正在为一个应用程序构建一个自定义对话框,在该对话框中,我希望使用在用户点击某个内容时调用的闭包,类似于:
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()
}