我知道单例是敏感的主题,但我真的不想听到任何关于它的信息,或者你对这个实现的看法。这个问题与此无关。
所以,我已经使用带有实例的静态变量实现了一个单例。
private static var instance:SomeClass = new SomeClass();
public static function getInstance():SomeClass {
return instance;
}
SomeClass
是库中的一个类,在该类中,有一些名为someSymbol
.
出于某种原因,当我SomeClass
作为单例使用时,每次我想访问时someSymbol
都会得到Cannot access a property or method of a null object reference
. 但是,如果我SomeClass
使用常规实例化来实现,错误就会消失。
我试过someSymbol
以不同的方式访问,但我总是得到错误。
someSymbol.rotation = 0;
并且
var aSymbol = getChildByName("someSymbol");
aSymbol.rotation = 0;
并且
trace(someSymbol); // null
trace(this['someSymbol']); // null
trace(SomeClass.instance.someSymbol); // throws error
那么为什么我null
在使用这个单例实现时会得到,而不是像往常一样实例化类时呢?
编辑:
感谢@Marty Wallace 的回答,我改变了我的单例实现,现在它可以工作了。
因此,不要以这种方式实例化实例:
private static var instance:SomeClass = new SomeClass();
相反,我在第一次getInstance()
调用时实例化它,就像@Marty 所做的那样。
我不知道幕后到底发生了什么,但SomeClass
在文档类运行之前实例化时似乎没有完全导出。