我有一個簡單的 NSWindow 子類,并且有一些回傳 NSWindow 的邏輯。當傳入screen的初始化程式時NSWindow,應用程式會導致
Fatal error: Use of unimplemented initializer 'init(contentRect:styleMask:backing:defer:)' for class 'myClass'
這是一段代碼:
class myClass: NSWindow {
init() {
...
super.init(contentRect: NSRect(x: 0, y: 0, width: 100, height: 100),
styleMask: .borderless,
backing: .buffered,
defer: false,
screen: /* returned NSScreen */) // this crashes
...
}
}
我不確定是什么原因造成的,我檢查過它NSScreens.screens回傳了一個包含兩個非零螢屏的陣列(對于我的兩個顯示幕),我可以從中獲取所有必要的資料。
為什么將它傳遞給初始化程式崩潰?
(我已經確定這里的邏輯不是問題;僅NSScreen.screens[0]在screen: 引數中進行測驗也會導致它崩潰。)
提前致謝。
uj5u.com熱心網友回復:
事實證明 Xcode 像往常一樣帶有錯誤訊息。在一個全新的測驗專案中運行它并得到了實際錯誤
Must call a designated initializer of the superclass 'NSWindow'
with screen 中的初始化器NSWindow是它的便利初始化器,不能從子類中呼叫。閱讀此處了解更多資訊:為什么 Swift 初始化程式不能在其超類上呼叫便利初始化程式?
NSWindow根據您的應用程式結構,在沒有子類化的情況下初始化自身可能是一種臨時解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/504405.html
下一篇:如何查詢FinderNSURL?
