2012-05-02 2 views
0

사용되지 않는 변수와 초기화되지 않은 변수는 어떻게 삭제할 수 있습니까? 화면 크기에 따라 사용할 수있는 마스크와 필터가 있지만 필요하지 않을 때 간단히 제거 할 수 있습니까? 예를 들어 :사용되지 않는 변수의 AS3 삭제

var appMask:Shape; 
if ((screenR % 1) > 0) { 
    appMask = new Shape; 
    appMask.graphics.beginFill(0x000000); 
    appMask.graphics.drawRect(0,0,screenW,screenH); 
    appMask.graphics.endfill(); 
} else { 
    //delete appMask variable? 
} 

나는 또한뿐만 아니라 변수 생성에 새로운 모양을하고 나중에 쓰레기 정리에 대한 널 (null)로 설정 생각했지만, 나는 예상대로이 작동 할 수 있도록합니다.

감사합니다.

답변

3

짧은 대답, 아니오.

제공 한 예제에서 실제로 개체를 인스턴스화하지 않았으므로 걱정할 사항은 없습니다. 변수는 생성 된 스코프의 지속 기간 동안 존재하게되며, 그러면 아무런 영향을 끼치 지 않고 사라집니다. 상당한 메모리 오버 헤드가없고 누수 된 메모리가 없습니다.

개체를 인스턴스화하는 경우 실제로 삭제할 수 없습니다. 자동화 된 가비지 컬렉터가 가능한 빨리 처리 할 수 ​​있도록 객체와 관련된 모든 이벤트 리스너를 제거하고 해당 객체에 대한 모든 참조를 변경 (null 작동)하고 다음 스윕에서 처리해야합니다.

+0

완벽한 답변, 감사합니다. 나는 오버 헤드에 대해 대부분 걱정했다. 나는 인스턴스화되지 않은 상태로 남아있는 애플리케이션의 마스킹과 크기 조정을 중심으로 거의 변하지 않습니다. 감사! –

0

이 경우 앱 마스크를 삭제할 필요가 없습니다. 앱 마스크가 사용되지 않고 앱에서 참조되지 않으면 가비지 수집기가 차지하는 메모리가 해제됩니다. else 블록에서 null을 명시 적으로 설정할 필요는 없습니다.

한편 로컬 변수가 아닌 delete 키워드를 사용하여 동적 객체의 구성원을 삭제할 수 있습니다.

관련 문제