UICollectionViewCell 개체를 볼 수 없으면 다시 사용할 수 있도록 대기열에 추가됩니다. 메모리 경고가 발생하면 재사용 대기열의 셀에 어떤 일이 발생합니다. 대기열이 지워지고 세포가 파괴되었거나 그대로 남아 있습니까?메모리 경고 수신시 UICollectionView 유지 관리 대기열은 어떻게됩니까?
답변
세포에 대한 강력한 참조를 유지하는 방법이 있다면 제거되지 않으며 그 세포의 음색을 갖게됩니다. 또한 셀이 올바르게 대기열에서 제외되지 않았고 셀에 대한 강력한 참조가있는 경우 tableViewController가 다시 초기화되지 않는다는 것을 기억해야합니다.
제 경우에는 셀에 대한 강력한 참조를 유지하지 않습니다. 난 단지 그 구현이 숨겨져 있기 때문에 메모리 경고가 발생할 경우 대기열에 어떤 일이 일어나는지 일반적으로 알고 싶다. –
셀에 대한 참조를 유지할 본문이 없지만 응용 프로그램이 메모리가 부족해지면서 시스템이 응용 프로그램을 종료 할 때까지 스크롤 속도가 급격 해지는 결과가 발생합니다 –
메모리 경고가 수신되면 보이지 않는 셀 객체는 메모리에서 삭제되고 대기열 관리자는이 프로세스를 내부적으로 처리합니다.
자세히 알아 보려면 메모리 관리가 어떻게 작동합니까? 시뮬레이터에서 코드를 실행하십시오.
그것에 의해 획득 된 주소를 제공하는 셀 객체를 인쇄하십시오. 나중에 하드웨어 옵션을 선택하여 메모리 경고를 생성하십시오.
"row = 7 -> cell = <UICollectionViewCell: 0x7ff8b89096e0; frame = (2 1935; 371 265); clipsToBounds = YES; hidden = YES; opaque = NO; layer = <CALayer: 0x61800003da20>>"
이렇게하면 주소 관리에 대해 더 많이 이해하는 데 도움이됩니다.
왜 신경 씁니까? 그것이 파괴되면 당신은 어쨌든 새로운 것을 만들어야합니다, 그래서 당신을 귀찮게해서는 안됩니다. – Lefteris
@Lefteris는 많은 양의 메모리를 차지하는 무거운 내용의 다른 셀을 가지고 있다고 말할 수 있습니다. 이 경우 메모리 경고가 표시 될 때 어떤 일이 발생하는지 알고 있으면 이점이 추가됩니다. 그 시스템에 의지 할 수 있는지, 아니면 그 메모리를 지울 필요가 있는지를 알면 좋다. –
무거운 내용을 자동 회수 풀에 넣으십시오. – Lefteris