当我在Cocoa中对任何内容进行子类化时,我遇到了很多问题,所以我决定创建一个MVCE并在此处发布。亲自尝试一下。
我在Xcode中使用以下选项创建了一个简单的Cocoa应用程序:
语言:Swift
使用故事板:否
然后我创建了一个名为Rectangle的NSView子类:
import Foundation
import Cocoa
class Rectangle: NSView { //1
init(frame: NSRect) { //2
super.init(frame: frame) //3
} //4
} //5
奇怪的是,在我打字时,有些错误会来来去去。当我编译项目时,我收到以下错误:
// 2:覆盖声明需要'覆盖关键字'
的子类提供
// 5:'必需'初始化程序" init(编码器:)'必须由NSView'
一旦我开始输入,我就会收到以下其他错误:
// 1:使用未声明的类型' NSView'
// 3:'超级'成员不能在根类中引用
如果我再次编译,之前的两个错误就会消失。
知道我做错了什么吗?就像我说的那样,亲自尝试一下。也许这是一个错误。
答案 0 :(得分:0)
除了忘记override关键字而忘记实现initWithCoder方法之外,听起来你没有做错任何事情。
请记住,在键入时,代码处于不稳定状态。当你开始编写一行代码时,在完成编写之前,它将充满错误。