在「deinit」方法中沒有命中斷點時會出現主題。解決方案是將可執行代碼放入內部。試過 - 沒有工作。解除視圖控制器後不會調用OSX deinit
的代碼從第一窗口啓動ViewController
:
let vc = self.storyboard?.instantiateController(withIdentifier: "testwindow") as! NSViewController
self.presentViewControllerAsModalWindow(vc)
它會打開一個按鈕,呼籲點擊下面的代碼
dismissViewController(self)
和這裏的新窗口是DEINIT代碼與斷點。
殭屍對象並不在計劃啓用。
如果在彈出窗口再次出現時重新使用視圖控制器,這將不會成爲問題,但是每次都會創建視圖控制器的新實例。
有什麼辦法可以確保物體被破壞?
我想說你還有一個或多個強大的引用指向你的VC。這種方式在調用解僱時不會被初始化。 – dvdblk
@dvdblk除了我提到的,我沒有任何額外的代碼。這是一個測試項目。故事板有可能以某種方式阻止它被釋放? – Ruzard
@Ruzard在哪個類中調用dismissViewController(self)?視圖的主持人或呈現的視圖。該方法的文檔聲明「要解除模態窗口,請調用self(呈現視圖控制器)上的dismissViewController(_ :)方法。」。這可能是您代碼中的潛在問題。 –