我有一个自定义的NSView类,如下所示:
UITest
当然,Xcode抱怨我的类没有初始化器,所以我需要覆盖指定的初始化器,以便初始化myClassVar。
我该怎么做?
答案 0 :(得分:8)
试试这个;
class MyClass: NSView
{
var myClassVar: NSColor! // the optional mark ! to be noticed.
override init(frame frameRect: NSRect) {
super.init(frame:frameRect);
}
required init(coder: NSCoder) {
super.init(coder: coder)
}
//or customized constructor/ init
init(frame frameRect: NSRect, otherInfo:Int) {
super.init(frame:frameRect);
// other code
}
}
答案 1 :(得分:1)
如果您为颜色指定默认值,则NSView的初始化程序仍然有效。
以下是几种方法:
var myClassVar: NSColor?
var myClassVar: NSColor! // make sure to set this before you actually access it
var myClassVar: NSColor = NSColor.clearColor()
第二个例子(隐式解包可选)是Apple对IBOutlets的处理方式。否则,您需要一个初始化程序,将每个变量设置为init方法中的非null值。
有关此内容的详细信息,请参阅Swift Initialization and the Pain of Optionals,其中讨论了这些解决方案:
NSColor?
),在super.init之后实例化NSColor!
)