我知道单身人士是敏感话题,但我真的不想听到任何关于这一点,或者你对这个实现的看法。这个问题与此无关。
所以,我已经使用带有实例的静态var实现了一个单例。
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
。
答案 0 :(得分:1)
你的例子对我来说很好:
public class Singleton
{
private static var _instance:TestClip;
public static function get instance():TestClip
{
if(_instance === null) _instance = new TestClip();
return _instance;
}
}
TestClip
有一个内部MovieClip,实例名称为inner
:
trace(Singleton.instance.inner); // [object MovieClip]
如果你为SomeClass
上课并为这样的someSymbol
做一个吸气器,你有运气吗?
public function get someSymbol():MovieClip
{
return this["someSymbol"];
}