This page was saved using jaction on 09/04/06 8:33:20.
Address: http://flexdocs.kr/docs/flex2/langref/compilerWarnings.html
Title: 컴파일러 경고 (Flex™ 2 레퍼런스 가이드)  •  Size: 34655

컴파일러 경고 메세지에서는, 유효한 코드를 특정해, 컴파일을 정상적으로 실시할 수가 있습니다만, 의도에 반한 내용이 표시되는 경우도 있습니다. 이러한 문제를 검출할 수 있도록(듯이) 하려면 , ActionScript 프로젝트를 warning 모드로 컴파일 합니다.

경고안에는,"형태 선언이 없습니다" 등, 코딩 스타일의 선택에 관한 것이 있어, 유효하게 할지 어떨지를 선택할 수 있습니다. 그 밖에 "null 에 대입할 수 없습니다" 등, 유효한 것은 않지만 유저가 상정한 것처럼 동작하지 않을 가능성이 있는 명령문(statement)를 지적하는 경고가 있습니다. 3 번째의 클래스의 경고에서는, ActionScript 2.0 의 코드를 ActionScript 3.0 으로 이행할 때에 발생할 가능성이 있는 문제가 검출됩니다.

See also

컴파일러 에러
런타임 에러

 코드메세지설명
  1009_ '_'에 형태 선언이 없습니다. 코딩 스타일의 선택사항으로서 데이터형을 선언하지 않는다고 하는 방법도 있습니다. 함수의 반환값의 형태, Parameters, 또는 변수에 형태 선언이 없습니다만, 형태 선언을 사용하면, 컴파일러로 코드를 효율적으로 출력할 수 있어 컴파일시의 에러 검출의 정밀도도 높아집니다. 형태 선언의 사용을 잊었을 경우에 통지하려면 , 이 경고를 유효하게 합니다.
  1013_ 형의 변수는 undefined 로 할 수 없습니다. 값 undefined 는 _ 에 형태 강제당한 다음에 비교됩니다. * 형태의 변수만 undefined 로 할 수 있습니다. 매우 일부의 예외를 제외해, 초기화되어 있지 않은 변수의 디폴트치는 undefined 는 아니고 null 가 됩니다. 예외로서 Boolean 변수의 디폴트치는 false, Number 변수의 디폴트치는 NaN, int 변수 또는 uint 변수의 디폴트치는 0 이 됩니다.
  1031이행의 문제 : new _ 의 결과는, 함수 _ 의 새로운 인스턴스는 아니고, 그 함수의 반환값이 됩니다. 코드의 이행에 관한 경고입니다. 검출된 코드는 ActionScript 2.0 으로 ActionScript 3.0 으로 동작이 다릅니다. 다음에 예를 나타냅니다.
function f(){
   this.b = 22;
   this.a = new Array(2);  
   this.a[0] = 33;
   this.a[1] = 44;
   return a; 
   } 
   // returns a new instance of f in ActionScript 2.0 and a new 2 element array in ActionScript 3.0
   var d = new f();  // Warning here
   trace(d.a);       // undefined in ActionScript 3.0, [33,44] in ActionScript 2.0.
  1035Boolean()를 인수없이 사용합니다. 코드의 이행에 관한 경고입니다. Boolean() 함수는, ActionScript 3.0 에서는 false 를 돌려줍니다만, ActionScript 2.0 에서는 undefined 를 돌려줍니다.
  1039이행의 문제 : Number('') 함수를 empty의 string 인수로 호출했을 경우, ActionScript 3.0 에서는 0 을 돌려주어, ActionScript 2.0 에서는 NaN 를 돌려줍니다. 코드의 이행에 관한 경고입니다. Number() Methods를 string 인수로 호출하면, string중의 공백을 모두 스킵 해, 숫자가 검출되지 않았던 경우에 디폴트치의 0 을 돌려줍니다. ActionScript 2.0 에서는, string에 공백이 포함되는 경우에 NaN 가 돌려주어집니다.
  1045이행의 문제 : Array.toString()에 의한 null 엘리먼트와 undefined 엘리먼트의 처리 방법이 바뀌었습니다. 코드의 이행에 관한 경고입니다. ActionScript 2.0 에서는,null 배열 엘리먼트는 null 에 변환되어undefined 엘리먼트는 undefined 에 변환됩니다. ActionScript 3.0 에서는,null 엘리먼트 및 undefined 엘리먼트는 양쪽 모두 empty의 string ''에 변환됩니다. 배열로부터의 toString() 출력을 해석하는 코드가 있는 경우는, 이 차이에 맞추어 코드를 조정할 필요가 있습니다.
  1059이행의 문제 : property _ 는 지원(support)되지 않게 되었습니다. _. 코드의 이행에 관한 경고입니다. 사용하려고 하고 있는 property는, ActionScript 3.0 에는 존재하지 않습니다.
  1061이행의 문제 : Methods _ 는 지원(support)되지 않게 되었습니다. _. 코드의 이행에 관한 경고입니다. 사용하려고 하고 있는 Methods는, ActionScript 3.0 에는 존재하지 않습니다.
  1066__resolve 는 지원(support)되지 않게 되었습니다.  
  1067이행의 문제 : __resolve 는 지원(support)되지 않게 되었습니다. 같은 기능을 얻기에는 새로운 Proxy 클래스를 사용해 주세요. 코드의 이행에 관한 경고입니다. __resolve 의 옮겨놓아에 관한 상세한 것에 대하여는, 본레퍼런스 가이드의 Proxy 를 참조해 주세요.
  1071이행의 문제 : _level 는 지원(support)되지 않게 되었습니다. 상세한 것에 대하여는, flash.display 패키지를 참조해 주세요. 코드의 이행에 관한 경고입니다. 사용하려고 하고 있는 property는, ActionScript 3.0 에는 존재하지 않습니다.
  1073이행의 문제 : _ 는 다이나믹 클래스가 아닙니다. 인스턴스에 멤버를 동적으로 추가할 수 없습니다. 코드의 이행에 관한 경고입니다. ActionScript 2.0 에서는 Number 등의 클래스의 대부분이 동적이기 때문에, 실행시에 이러한 클래스의 인스턴스에 새로운 property를 추가할 수가 있습니다. 이 경고는, 동적이지 않은 클래스의 인스턴스에 property를 추가하려고 하는 코드가 있는 경우에 표시됩니다.
  1083 이행의 문제 : Methods _ 는 this 키워드의 범위(scope)의 변경에 의해 ActionScript 3.0 에서는 다른 동작을 합니다. 추가 정보에 대해서는, 경고 1083 에 관한 주제를 참조해 주세요. 코드의 이행에 관한 경고입니다. 이 경고는, 통상 콜백 함수로서 사용되는 object의 Methods가 값으로 해서 사용되었을 경우에 생성됩니다. ActionScript 2.0 에서는, 함수는 불려 간 문맥내에서 실행됩니다. ActionScript 3.0 에서는, 함수는 항상 정의된 문맥내에서 실행됩니다. 따라서, 변수명 및 Methods명은, 콜백이 불려 간 문맥이 아니고, 콜백이 포함되어 있는 클래스에서 해결됩니다. 다음에 예를 나타냅니다.
class a 
{ 
   var x; 
   function a() { x = 1; } 
   function b() { trace(x); } 
}

var A:a = new a();
var f:Function = a.b; // warning triggered here
var x = 22;
f(); // prints 1 in ActionScript 3.0, 22 in ActionScript 2.0
  1085_ 가 디폴트의 namespace에 범위(scope) 됩니다 : 내부 _. 이 패키지의 외부에는 표시되지 않습니다. 코딩 스타일의 선택사항으로서 namespace를 선언하지 않는다고 하는 방법도 있습니다. namespace의 선언이나 정의에 대한 액세스 지정자의 선언을 잊었을 경우에 통지하려면 , 이 경고를 유효하게 합니다. 선언이 없는 경우, 정의는 이 파일의 외측의 코드로부터 참조할 수 없습니다. 이 파일의 외측의 코드로부터 정의를 참조할 수 있도록(듯이) 하려면 , 액세스 지정자 public 또는 namespace 선언으로 정의를 선언합니다. 이 파일내에서만 정의를 참조해, 이 경고가 표시되지 않게 하려면 , 정의를 private 로서 선언합니다.
  1087이행의 문제 : ActionScript 3.0 에서는, object의 property를 "for x in target" 명령문(statement)내에서 랜덤인 차례로 반복 처리 합니다. 코드의 이행에 관한 경고입니다. ActionScript 2.0 에서는, object의 property는 항상 같은 순서로 처리되고 있었습니다. ActionScript 3.0 에서는, 순서는 랜덤으로 컴퓨터 마다 다를 가능성이 있습니다. 예기치 않은 순서로 동작했을 경우는, 이 루프를 조사해, 동작 순서의 변경이 코드에 영향을 줄지 어떨지를 확인해 주세요.
  1089에러 코드 : _. 원시 파일이 파손하고 있는지, 컴파일러의 코드에 버그가 있는 것이 원인입니다. Adobe Systems사까지 버그를 보고해 주세요.
  1091이행의 문제 : _ 코드의 이행에 관한 경고입니다. ActionScript 2.0 에서는,onMouseDown 등이 특별한 이름으로 Methods를 선언하면, Flash 는 특정의 이벤트가 발생했을 때에 그 Methods를 호출합니다. ActionScript 3.0 에서는, 이 이벤트를 Methods로 받도록(듯이) 등록하려면 , Methods와 addEventListener() 를 호출할 필요가 있습니다. 상세한 것에 대하여는, 본레퍼런스 가이드의 「addEventListener」를 참조해 주세요.
  1093uint 값 (정의 값)가 필요한 곳에 부의 값이 사용되었습니다. uint 데이터형에 부의 값을 할당하면, 매우 큰 정의 값이 됩니다. var x:uint = -1; trace(x); // 4294967295.
  1097null 의 비교가 무효입니다. _ 형태의 변수는 null 로 할 수 없습니다. Boolean, int, uint, 및 Number 의 인스턴스를 null 로 할 수 없습니다. 비교 연산자는, Boolean 와 비교하는 경우는 nullfalse 로 변환해, Number, int, 또는 uint 데이터형과 비교하는 경우는 0 으로 변환합니다.
  1099NaN 의 비교가 무효입니다. 이 명령문(statement)는, 항상 false 라고 평가합니다. NaN 는 고유의 수학 property를 가지기 (위해)때문에, 이것을 포함한 비교의 평가 결과는 모두 false 가 됩니다. 대신에, 글로벌인 isNaN() 함수를 사용해 NaN 값를 검출합니다. 다음에 예를 나타냅니다.
trace(NaN == NaN); // false!
trace(NaN ! = NaN); // false again!
trace(isNaN(NaN)); // true
  1101조건내의 할당입니다. = (은)는 아니게 == 를 말입니까? 할당 명령문(statement) = 의 결과는,= 명령문(statement)의 우측의 값입니다. 할당 명령문(statement)를 조건으로서 사용할 수 있습니다만, 추천 되지 않습니다. 통상은, 등가 테스트 == 를 입력하려고 해 잘못했던 것이 원인입니다. 다음에 예를 나타냅니다.
var x:Boolean = false;
var y:Boolean = true;
// it is hard to determine if the line below intentionally sets x's value to y's or if its a typo
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true. "); }
  1103치 _ 가 필요합니다만, null 가 사용되고 있습니다. Boolean, Number, int, 및 uint 변수에 null 를 값으로 해서 할당할 수 없습니다. null 값는, Boolean 에 할당하는 경우는 false 에, int, uint, 또는 Number 에 할당하는 경우는 0 에 암묵적으로 캐스트 됩니다.
  1105constructor    함수가 클래스 _ 로 지정되고 있지 않습니다. 코딩 스타일의 선택사항으로서 constructor    함수를 선언하지 않는다고 하는 방법도 있습니다. 클래스에 대해서 constructor    을 항상 선언하는 경우는, 이 경고를 유효하게 합니다. 이 경고는, 클래스명이 변경되고 있어, constructor    명이 변경되어 있지 않은 상황의 검출을 목적으로 하고 있습니다. 경고를 유효하게 하지 않는 경우는, 이러한 상황에 대해서 플래그는 설정되지 않고, 이전의 constructor    은 통상의 함수와 같이 표시됩니다.
  1111정수는 초기화되지 않았습니다.  
  1113Array(x)는 new Array(x)와 같이 동작합니다. Array 형에 값을 캐스트 해, Array(x) 대신에 식 x 를 Array 로서 사용합니다.  
  1115super() 명령문(statement)는, 이 constructor    을 입력하기 전에 실행됩니다. 실행시에 명시적으로 제어하는 경우는, constructor    내에서 super()에의 호출을 추가합니다. 코딩 스타일의 선택사항으로서 constructor    내에 super() 에의 호출을 추가하는 방법도 있습니다. super() 를 항상 특정의 시점에서 호출하는 경우는, 이 경고를 유효하게 합니다. 이것에 의해, 로컬의 초기화 코드의 다음에 super() 를 호출하는 경우에, 호출의 추가를 잊는 것을 막을 수가 있습니다.
  3552TextField 에 += 를 사용해 텍스트를 추가하면, TextField.appendText() Methods를 사용하는 것보다도 몇배도 늦어집니다. 이 중요한 텍스트 최적화의 상세한 것에 대하여는, 본레퍼런스 가이드의 TextField 클래스의 appendText() Methods를 참조해 주세요.
  3554_ 형이 필요한 개소에서 함수치가 사용되고 있습니다. 이 함수 참조의 뒤에 괄호 ()가 없을 가능성이 있습니다. ActionScript 에서는 함수를 값으로 해서 사용할 수 있습니다. 문제의 코드에서는, Function, Object,* 이외의 형태가 필요한 개소에서 Function 형의 값을 사용하고 있습니다. 통상은, 함수명의 뒤의 괄호 () 가 빠져 있는 것이 원인입니다.
  3556instanceof 연산자는 사용되지 않게 되었습니다. 대신에 is 연산자를 사용해 주세요.  
  3574이행의 문제 : ActionScript 2.0 XML 클래스의 이름은 XMLDocument 가 되었습니다. 코드의 이행에 관한 경고입니다. ActionScript 3.0 에서는, XML 는 ActionScript 2.0 과 다른 클래스가 되었습니다. ActionScript 3.0 에서는, XMLDocument 클래스가 ActionScript 2.0 의 XML 클래스에 상당합니다. ActionScript 3.0 의 XML 클래스에서는, 보다 간단하고 강력한 API 에 의해 기능이 개선되었습니다. 상세한 것에 대하여는, ActionScript 레퍼런스 가이드의 XML 를 참조해 주세요.
  3576Date(x)는 new Date(). toString()와 같이 동작합니다. Date 형에 값을 캐스트 해, Date(x) 대신에 "x as Date" 를 사용합니다.  
  3582현재의 클래스와 같은 이름으로 패키지를 임포트 하면, 이 범위(scope)내의 클래스 식별자가 비표시가 됩니다.  
  3584'_'라는 이름의 인수를 복수 지정했습니다. 이 인수에의 참조에서는, 마지막 인수가 항상 참조됩니다.  
  3590불리언 값이 필요합니다만, 비불리언 값이 사용되고 있습니다.  
  3591불리언 값이 필요합니다만,_ 이 사용되고 있습니다. 불식에 형태 강제당합니다.  
  3593_ 은 dynamic 클래스 _ 의 인식된 property가 아닙니다. strict 모드의 컴파일에서는, 동적인 클래스의 인스턴스에 대해 미정도리의 property를 체크하지 않습니다. Date, RegExp, Error 형은, ECMAScript 와 후방 호환성을 유지하기 위해서 동적인 클래스가 되고 있습니다. 이 경고는, 이러한 클래스의 인스턴스로 미정도리의 property가 사용되고 있는 것을 나타냅니다. 이 경우는, Date 값에 존재하지 않는 year property를 취득 또는 설정하려고 하면 문제가 일어납니다. 올바른 property명은 fullYear 입니다.
  3595_ 는 dynamic 클래스 _ 의 인식된 Methods가 아닙니다. strict 모드의 컴파일에서는, 동적인 클래스의 인스턴스에 대해 미정도리의 Methods를 체크하지 않습니다. Date, RegExp, Error 형은, ECMAScript 와 후방 호환성을 유지하기 위해서 동적인 클래스가 되고 있습니다. 이 경고는, 이러한 클래스의 인스턴스로 미정도리의 Methods가 사용되고 있는 것을 나타냅니다.
  3597변수의 정의가 중복 하고 있습니다. 이 선언은,_ 의 선언보다 우선됩니다. 컴파일러로, 변수의 중복 한 정의가 검출되었습니다. 예기치 않은 결과가 발생할 가능성이 있습니다. ActionScript 에서는, 변수의 블록 레벨의 범위(scope)는 지원(support)되고 있지 않습니다. 함수 본체로 정의되고 있는 변수는 모두 같은 범위(scope)내에 존재합니다. 이것은, 변수가 if 명령문(statement),while 명령문(statement),for 명령문(statement)등으로 정의되고 있는 경우도 같습니다. 예를 들어, 다음의 코드에서는 변수 x 를 2 회 선언하고 있습니다.

function test() {
	var x:Number = 10;
	if (true) {
	    for (var x=0; x < 5; x++)  // warning here, this is the second defintion of x
	    trace(x);
	}
	trace(x); // 5, not 10.   The last value set by the for loop above is the current value of x
}
  3598정의명은 임포트 된 패키지명과 같습니다. 그 이름에의 무수식의 참조는, 정의는 아니고 패키지가 대상이 됩니다.  
  3599정의명은 임포트 된 패키지명과 같습니다. 그 이름에의 무수식의 참조는, 정의는 아니고 패키지가 대상이 됩니다. 정의의 이름이 범위(scope)내의 패키지와 같은 경우, 그 이름에의 무수식의 참조는 정의는 아니고 패키지가 대상이 됩니다. 이 경우는, 변수의 참조시에 예기치 않은 에러가 발생하는 일이 있습니다. 정의에의 참조는, 패키지는 아니고 정의를 대상으로 하도록, 수식명으로 지정할 필요가 있습니다.




 

코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트

현재의 페이지: http://flexdocs.kr/docs/flex2/langref/compilerWarnings.html