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()
}
这是我不知道该怎么办,看过苹果书,它对我没有意义。 ModalDialog在视图控制器类中被调入,但我如何保持对它的强烈引用? – 2014-10-10 10:17:32
编辑答案 – 2014-10-10 10:24:21