2010-08-04 4 views
1

리피터 안에 삭제됩니다 어떻게 항목을 보장하기 위해이 같은 코드를 가지고 :플렉스

화면에서 allItems 항목 disapears에 대한 코드 변경이 예상하지만 여전히 메모리에 앉아
 <mx:Repeater id="allItemRepeator" 
        dataProvider="{_model.allItems}" 
        > 
       <components:ComponentSelector id="componentSelector" 
               dataLoad="{allItemRepeator.currentItem}" /> 
     </mx:Repeater> 

! 필자는 "추적"기능이있는 컴포지션 내부의 기능을 알고 있으므로 구성 요소가 화면에서 사라진 후에도 추적 출력이 계속 표시됩니다. 참조가 삭제 될 때 요소가 삭제되도록하려면 어떻게해야합니까? "Repeator"대신 항목을 표시하기 위해 List 기반 구성 요소를 사용하면 문제가 해결됩니다 (코드를 리팩터링해야하므로 시도하기 전에 요청할 것입니다)

답변

0

구성 요소에 대한 참조가 아직 보유 중입니다. 그래서 그것은 쓰레기 수집되지 않습니다. 특히 바인딩 (나는 당신이 사용하고 있음을인지하고 있습니다)은 이것을 악명 높습니다.

문제를 디버깅하는 가장 좋은 방법은 프로파일 러를 통해 응용 프로그램을 실행하고 제거 된 구성 요소에 대한 참조를 유지하는 것입니다.

+0

감사합니다. @Gregor 현재 프리미엄 플래시 빌더 에디션이 없습니다. 업그레이드 할 때까지 다른 방법을 권장합니까? – Tam

+0

코드를 보지 않고 참조를 유지하는 것이 무엇인지 아는 것은 정말 어렵습니다! 바인딩이 가장 가능성있는 범죄자이지만 강력한 EventListeners를 만드는 경우 구성 요소 자체가 문제가 될 수 있습니다. 리피터는 다음과 같은 몇 가지 문제가 있기 때문에 실제로 모범 사례가 아닙니다. –

+0

감사합니다. @Gregor 사진에 EventListener가있는 것 같아요! 해당 구성 요소에 대한 "removefromstage"이벤트 처리기를 추가하여 수동으로 항목을 삭제하고 작동하는 것 – Tam