V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
您的好友邀请您体验AI多模型共享资源
海量资源池 · 异常自动切换 · 分布式架构 · 故障自动转移 共享方案:仅 $55/月 opus 每天5小时官方限制 Claude sonnet 4无限量 Codex公测中。免费体验
Promoted by 0x3751
EVPATOR
V2EX  ›  Swift

请教一个 Swift 构造器 XCode 编译报错的问题

  •  
  •   EVPATOR · 2023-02-11 19:59:33 +08:00 · 1457 次点击
    这是一个创建于 955 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 XCode 14.2 上,类 AWindow 编译成功,但运行时出错,类 BWindow 直接编译报错。实在没想明白为什么把属性 let 改成 var 会导致编译结果不一样,从 swift 语法来讲两个应该都会编译错误吧?

    import AppKit
    
    // NSWindow 应该只有 initWithContentRect:styleMask:backing:defer: 这一个指定构造器
    // 以下两个类的 init(name:)都是不正确写法
    
    class AWindow: NSWindow {
        let name: String
        
        init(name: String) {
            self.name = name
            super.init() // 运行时错误:Use of unimplemented initializer 'init(contentRect:styleMask:backing:defer:)' for class 'LearnSwift.AWindow'
        }
    }
    
    _ = AWindow(name: "")
    
    class BWindow: NSWindow {
        var name: String
        
        init(name: String) {
            self.name = name
            super.init() // 编译错误:Must call a designated initializer of the superclass 'NSWindow'
        }
    }
    
    _ = BWindow(name: "")
    
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:31 · PVG 21:31 · LAX 06:31 · JFK 09:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.