有沒有辦法以編程方式關閉NSComboBox彈出窗口?NSComboBox以pogrammatically方式關閉彈出窗口
彈出窗口打開時,似乎有一個NSComboBox的錯誤,並且控件get被刪除然後釋放。出於某種原因,NSComboBox的dealloc在破壞之前不會清除彈出窗口。
編輯:只是澄清 - 這個錯誤只發生在彈出列表打開時。否則,該控件將被正確且乾淨地釋放。
編輯編輯: 這是如何重現它。
- 創建一個新的Cocoa應用程序。
- 關閉自動引用計數。
- In @(applicationDidFinishLaunching)創建一個新的NSComboBox並將其存儲到成員中。
- 將組合框添加到窗口的contentView。
- 使用鍵盤快捷鍵創建新的菜單項並綁定到選擇器。
- 在菜單項的選擇器中:從視圖中移除組合框並釋放成員。不要忘記將它重新設置爲零。
- 運行該應用程序。
- 單擊組合框顯示彈出。
- 使用快捷方式刪除組合框。
我會假設,調用'abortEditing'將關閉它的型號關鍵路徑。我不確定你在說什麼「在破壞之前不清除彈出窗口」。彈出窗口是'NSComboBox'的一部分,所以必須發佈。你有沒有保留它? – 2014-09-23 16:02:04
是的,你說得對,控件在釋放時應該銷燬彈出窗口,但它不是 - 我認爲這是一個錯誤。用一個乾淨的項目很容易複製。 – AndyTang 2014-09-23 16:48:02
@(abortEditing)確實有用!然而,它將彈出窗口留下來,因爲它沒有關閉它 - 但它不再崩潰,因爲它不會嘗試訪問由於@(abortEditing)清理某些東西而已被刪除的內容。 – AndyTang 2014-09-23 16:49:41