Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 斯威夫特犯了各种各样的错误_Cocoa_Swift_Nsview - Fatal编程技术网

Cocoa 斯威夫特犯了各种各样的错误

Cocoa 斯威夫特犯了各种各样的错误,cocoa,swift,nsview,Cocoa,Swift,Nsview,当在Cocoa中对任何东西进行子类化时,我在Swift上遇到了很多问题,所以我决定创建一个。你自己试试看 我使用以下选项在Xcode中创建了一个简单的Cocoa应用程序: 语言:快速使用故事板:否 然后,我创建了一个名为Rectangle的NSView子类: import Foundation import Cocoa class Rectangle: NSView { //1 init(frame: NSRect) { //

当在Cocoa中对任何东西进行子类化时,我在Swift上遇到了很多问题,所以我决定创建一个。你自己试试看

我使用以下选项在Xcode中创建了一个简单的Cocoa应用程序:

语言:快速使用故事板:否

然后,我创建了一个名为Rectangle的NSView子类:

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。当然,你可能会制造更多的错误,这也是可能的。