180bpm

Class 코딩중 참조형 변수들을 변수 선언부에서 초기화 하면 생기는 버그 본문

Flash/AS2

Class 코딩중 참조형 변수들을 변수 선언부에서 초기화 하면 생기는 버그

powdersnow 2013. 4. 15. 17:52

http://maohao.wordpress.com/2006/08/26/declaring-array-inside-class/


지영언니의 보고 요구방식에 따라 육하원칙으로.



누가 : 내가

언제 : 3월 말부터 오늘까지

어디서 : 회사에서

무엇을 : 채팅 작업을

왜 : 업무라서

어떻게 : 클래스를 짜는데 값이 원하는대로 들어가지가 않았다.



지지지난주부터 채팅만 계속 부여잡고 있는데..

이번엔 이쁘게 짜려고 클래스 뚝딱뚝딱 만들어서 값을 넣는데 자꾸 값이 이상하게 들어가지는것이었다.

설정창에 체크값이 담긴 Object를 던졌는데 자꾸 체크가 저절로 풀려버리질 않나

또 체크를 저장했더니 다른 데이터에서 뜬금없이 변하네???


알고보니 버그였다고 한다.



//code start
class Class {
	public var arr:Array = [];
	public var obj:Object = {};
	
}

var c:Class = new Class();
c.obj.a = 1;

var c2:Class = new Class();
trace(c2.obj.a)		// output : 1
//code end



VM 내부에서 어떤식으로 처리하는진 조예가 깊지 않아 잘 모르겠지만 빡치는건 확실하다.


..그럼 다 생성자 부분에서 이니셜라이징을 시켜야 한다는건데

이걸 지금 안것도 웃기고

이걸 지금까지 안고쳐준 어도비도 웃기고


덧. 서버 프로그래머 분이랑 담배피다가 원인을 알았는데.

스크립트 언어라서 컴파일때 파싱하는데 그때 이미 초기화 하라고 했는데 정작 인스턴스가 없으니 임의적으로 static 스럽게 변하는것 같다고 한다.

그래서 C#같은 경우엔 선언부에서 초기화하면 에러를 낸다고..

Comments