자주 쓰이지 않는 기능인 static 변수의 초기화 순서에 따라 문제가 발생할 수도 안 할수도 있다.
특히 static const 와 static var 변수는 초기화 순서가 다르다.
결과적으로 static var 가 static const 로 선언해 놓은 것보다 먼저 초기화 된다.
당연히 static 변수이기 때문에 둘 다 instance 변수가 초기화 되기 전에 초기화 된다.
그래서 static const 와 static var 는 분리해서 사용해야 한다.
예)
// 이미 생성된 개체를 참조할 때는 조심해야 한다.
// Value1 은 MyValue 개체이다. 이미 생성된 개체이다.
private static const myConst : MyValue = MyValue.Value1; <= 바람직하지 않다.
private static var myValue : MyValue = MyValue.Value1; <= 바람직하다.
// new 로 새로운 개체를 생성하고 그 값을 저장할 때는 static const,var 모두 사용해도 상관 없다.
private static const myConst2 : MyValue = new MyValue(1); <= 권장한다.
private static var myValue2 : MyValue = new MyValue(1); <= 사용해도 무방하다.
왜 그런지는 직접 테스트 코드를 작성해서 static const, static var 값을 참조해 보기 바란다.
방법은 컴포넌트를 생성하고 preinitialize,initialize,creationComplete 이벤트에서 각각의 값이 null 인지 유무를 확인해 보면 된다.