Cocoa 斯威夫特犯了各种各样的错误
当在Cocoa中对任何东西进行子类化时,我在Swift上遇到了很多问题,所以我决定创建一个。你自己试试看 我使用以下选项在Xcode中创建了一个简单的Cocoa应用程序: 语言:快速使用故事板:否 然后,我创建了一个名为Rectangle的NSView子类:Cocoa 斯威夫特犯了各种各样的错误,cocoa,swift,nsview,Cocoa,Swift,Nsview,当在Cocoa中对任何东西进行子类化时,我在Swift上遇到了很多问题,所以我决定创建一个。你自己试试看 我使用以下选项在Xcode中创建了一个简单的Cocoa应用程序: 语言:快速使用故事板:否 然后,我创建了一个名为Rectangle的NSView子类: import Foundation import Cocoa class Rectangle: NSView { //1 init(frame: NSRect) { //
import Foundation
import Cocoa
class Rectangle: NSView { //1
init(frame: NSRect) { //2
super.init(frame: frame) //3
} //4
} //5
奇怪的是,有些错误在我打字的时候来来去去去。编译项目时,我会出现以下错误:
//2:重写声明需要“重写关键字”
//5:'必需的'initializer'initcoder:'必须由'NSView'的子类提供
我一开始键入,就会出现以下附加错误:
//1:使用未声明的类型“NSView”
//3:无法在根类中引用“超级”成员
如果我再次编译,前面的两个错误就会消失
知道我做错了什么吗?就像我说的,你自己试试。也许这是个bug。除了忘记override关键字和忘记实现initWithCoder方法之外,听起来你没有做错什么
请记住,在键入时,代码处于不稳定状态。当您开始编写一行代码时,在您完成编写之前,它将充满错误。是否需要initWithCoder?在我完成键入后,开始键入时出现的错误将保留在那里,例如,将NSView更改为NSViewControlleri如果查看基类中initWithCoder的方法定义,您将看到所需的关键字。所以是的,这是必需的。错误将一直保留,直到编译器完成另一个过程,请尝试点击command-b。当然,你可能会制造更多的错误,这也是可能的。