栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Swift和init中子类化NSWindowController(windowNibName)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Swift和init中子类化NSWindowController(windowNibName)

您需要覆盖

NSWindowController
init()
init(window)
init(prer)
)的所有三个指定的初始化器,或者都不重写它们,在这种情况下,您的子类将自动继承,
init(windowNibName)
而所有其他便捷的初始化器都将覆盖,您将能够使用超类的便捷的初始化器来构造它:

// this overrides none of designated initializersclass MyWindowController: NSWindowController {    override func windowDidLoad() {        super.windowDidLoad()    }}// this one overrides all of them//// Awkwardly enough, I see only two initializers // when viewing `NSWindowController` source from Xpre, // but I have to also override `init()` to make these rules apply.// Seems like a bug.class MyWindowController: NSWindowController{    init()    {        super.init()    }    init(window: NSWindow!)    {        super.init(window: window)    }    init(prer: NSCoder!)    {        super.init(prer: prer)    }    override func windowDidLoad() {        super.windowDidLoad()    }}// this will work with either of the abovelet mwc: MyWindowController! = MyWindowController(windowNibName: "MyWindow")

语言指南中的“初始化/自动初始化继承”对此进行了介绍:

但是,如果满足某些条件,则会自动继承超类初始化器。实际上,这意味着您不需要在许多常见情况下编写初始化程序覆盖,并且可以在安全的情况下以最小的努力继承超类初始化程序。

假设为子类中引入的任何新属性提供默认值,则适用以下两个规则:

规则1 如果子类没有定义任何指定的初始化器,它将自动继承其所有超类指定的初始化器。

规则2
如果您的子类提供了其所有超类指定的初始值设定项的实现(通过按规则1继承它们,或通过提供自定义实现作为其定义的一部分),则它会自动继承所有超类的便利初始值设定项。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号