Ios 在调用UITapGestureRecognitor函数之前先进行Denit
我正在为一个应用程序构建一个自定义对话框,我希望在其中使用闭包,当用户点击某个东西时会调用闭包,有点像这样:Ios 在调用UITapGestureRecognitor函数之前先进行Denit,ios,swift,Ios,Swift,我正在为一个应用程序构建一个自定义对话框,我希望在其中使用闭包,当用户点击某个东西时会调用闭包,有点像这样: var modal = ModalDialog(title: "modal title", buttonClick: { () -> Void in println("clicked") }) modal.show() 因此,我创建了一个名为ModalDialog的类,其中有一个UITapGestureRecognitor,如下所示: v
var modal = ModalDialog(title: "modal title", buttonClick: { () -> Void in
println("clicked")
})
modal.show()
因此,我创建了一个名为ModalDialog的类,其中有一个UITapGestureRecognitor,如下所示:
var modalTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("buttonClickAction:"))
modalView.addGestureRecognizer(modalTap)
我的问题是,由于ARC,当点击被实际识别并尝试调用ButtonClickaAction时:类已经被取消初始化,应用程序崩溃
在我明确告诉ARC去初始化模态之前,我如何防止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()
}
这就是我不知道该怎么做的,我在苹果书上看到过,这对我来说没有意义。ModalDialog是在视图控制器类中初始化的,但如何保持对它的强引用?