2015-08-30 26 views

回答

4

试试这个;

 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

如果你给你的颜色一个默认值,那么NSView的初始值设定项仍然可以工作。

以下几种方法可以做到这一点:

var myClassVar: NSColor? 
var myClassVar: NSColor! // make sure to set this before you actually access it 
var myClassVar: NSColor = NSColor.clearColor() 

第二个例子(隐含解开可选)是苹果公司确实有IBOutlets。否则,您需要有一个初始化程序,它将您的每个变量设置为init方法中的非空值。

有关它的更多信息,请参阅Swift Initialization and the Pain of Optionals,其中讨论了这些解决方案:

  • 调用super.init之前将其实例化。
  • 可选变量(NSColor?),super.init
  • 隐式展开的可选变量(NSColor!
  • 后实例它使用懒惰属性
  • 使用懒惰属性与闭合
相关问题