首页 > 解决方案 > 无法覆盖已标记为不可用的“init”

问题描述

必须调用超类“NSWindow”的指定初始化程序:

import Cocoa

class MyWindow: NSWindow {

init(contentRect: NSRect, styleMask aStyle: Int, backing bufferingType: NSWindow.BackingStoreType, defer flag: Bool) {
    super.init(contentRect: contentRect, styleMask: NSWindow.StyleMask(rawValue: NSWindow.StyleMask.RawValue(aStyle)), backing: bufferingType, defer: flag)

    self.titleVisibility = .hidden
}


required init?(coder: NSCoder) { // error: Cannot override 'init' which has been marked unavailable AND Failable initializer 'init(coder:)' cannot override a non-failable initializer
    super.init(coder: coder) // error: 'init(coder:)' is unavailable
} }

标签: swiftmacos

解决方案


NSWindow不支持编码。您可能不会也不需要实施init(coder:). 只需删除该方法;反正你什么也没做。


推荐阅读