프로그래밍/FLEX

클락 2009. 2. 9. 18:40

자주 쓰이지 않는 기능인 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 인지 유무를 확인해 보면 된다.