【问题标题】:Cannot override 'init' which has been marked unavailable无法覆盖已标记为不可用的“init”
【发布时间】:2018-05-27 17:01:50
【问题描述】:

必须调用超类“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
} }

【问题讨论】:

    标签: swift macos


    【解决方案1】:

    NSWindow does not support coding. 你可能不需要也不需要实现init(coder:)。只需删除该方法;反正你什么也没做。

    【讨论】:

    • 致命错误:使用未实现的初始化程序 'init(contentRect:styleMask:backing:defer:)
    • 我不明白你的意思。这是编译时错误吗?运行时错误?是什么情况导致的?
    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2016-05-09
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多