2014-10-10 62 views
1

我建立一個自定義對話框的應用程序中,我會想使用閉包當用戶點擊的東西,是所謂的,有點像這樣: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從初始化模態直到我明確地告訴它如此做?

回答

0

在視圖控制器中保留對模態對話框的強烈引用。

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

相關問題