2009-11-19 3 views

답변

0

처럼

하면 파괴하여 의미 가비지 수집, 그럼 내가 이벤트 또는를위한 객체 방법이 있다고 생각하지 않습니다지고.

2

아니요, 안타깝게도 ActionScript에 소멸자가 없습니다.

+0

소멸자가없는 이유는 확실하지 않습니다 ... 정말 이상합니다. – milesmeow

+0

음, 나는 그것을 뒷받침 할만한 공식적인 정보가 없지만, 언어를 간단하게 유지하고자하는 경우에는 놀랄 일이 아니다. 메모리 사용량에 대해 이러한 모든 제어 기능을 사용할 수 있다면 가비지 수집 덕분에 메모리 할당에 신경 쓰지 않아도된다는 유토피아의 약속은 일종의 비논리적입니다. 하나는 주어진 객체에 대해 GC를 강요하는 것보다 실제로 참조 횟수를 제거하는 것과 동일하지만 더 높은 수준의 언어가 가질 수없는 복잡성 계층을 추가한다고 주장 할 수 있습니다. –

+0

메모리를 완전히 제어 할 수 없다. – zinovii

0

이것은 모든 개체에 적용되는 것은 아니지만 UIComponent를 확장하는 구성 요소를 볼 때 '제거'이벤트는 다소 유용 할 수 있습니다. 제거 된 개체에 대한 다른 강력한 참조가 없다고 가정하면 가비지 수집해야합니다.

UIComponent.html#event:remove

+0

예 개체가 UIComponents이므로 두 번째 옵션으로 고려했습니다. 대부분 FlexEvent.REMOVE 또는 Event.REMOVED를 사용하여 끝날 것입니다. – zinovii

+0

이것이 사실이지만 GC 이벤트로 생각하는 것은 위험합니다. 구성 요소를 제거한 다음 다시 양육 시나리오 (상태를 사용할 때 공통적 인 경우)와 같이 다른 곳에 구성 요소를 추가하면 먼저 REMOVE 이벤트를 얻은 다음 ADDED 이벤트를 얻습니다. 그러나 구성 요소가 제거 된 후에 절대로 추가되지 않는다는 것을 알게되면 사용자의 제안이 그 자리에서 올바르게 나타납니다. –

+0

또한 UIComponent의 removChild 함수를 재정의 할 수 있으므로 구성 요소가 표시 스택에서 제거되기 전에 기능을 수행 할 수 있습니다. 이 함수는 기본적으로 UIComponent 수준에서 비어 있습니다. –

0

한 가지 방법은 쓰레기 수집됩니다 물체가 당신을 위해 메모리를 할당 모든 개체에 컬렉션에 대한 참조를 유지하는 것입니다 여부를 알 수 있습니다. 그런 다음 GC가 그들을 파괴하기를 원할 때 컬렉션에서 꺼내십시오. 콜렉션에서 그것들을 꺼내면, 메소드 "beforeGarbageCollection"또는 "beforeDestruction"을 호출하십시오. 잘만되면 GC는 참조되지 않은 객체를 선택하여 파괴합니다.

이것이 적합한 지 알려주세요.

+0

그럼 다시 말해서, 리팩터링 할 시간 일 수도 있습니다. – sharvey