4

UICollectionViewCell 개체를 볼 수 없으면 다시 사용할 수 있도록 대기열에 추가됩니다. 메모리 경고가 발생하면 재사용 대기열의 셀에 어떤 일이 발생합니다. 대기열이 지워지고 세포가 파괴되었거나 그대로 남아 있습니까?메모리 경고 수신시 UICollectionView 유지 관리 대기열은 어떻게됩니까?

+0

왜 신경 씁니까? 그것이 파괴되면 당신은 어쨌든 새로운 것을 만들어야합니다, 그래서 당신을 귀찮게해서는 안됩니다. – Lefteris

+0

@Lefteris는 많은 양의 메모리를 차지하는 무거운 내용의 다른 셀을 가지고 있다고 말할 수 있습니다. 이 경우 메모리 경고가 표시 될 때 어떤 일이 발생하는지 알고 있으면 이점이 추가됩니다. 그 시스템에 의지 할 수 있는지, 아니면 그 메모리를 지울 필요가 있는지를 알면 좋다. –

+0

무거운 내용을 자동 회수 풀에 넣으십시오. – Lefteris

답변

0

세포에 대한 강력한 참조를 유지하는 방법이 있다면 제거되지 않으며 그 세포의 음색을 갖게됩니다. 또한 셀이 올바르게 대기열에서 제외되지 않았고 셀에 대한 강력한 참조가있는 경우 tableViewController가 다시 초기화되지 않는다는 것을 기억해야합니다.

+0

제 경우에는 셀에 대한 강력한 참조를 유지하지 않습니다. 난 단지 그 구현이 숨겨져 있기 때문에 메모리 경고가 발생할 경우 대기열에 어떤 일이 일어나는지 일반적으로 알고 싶다. –

+0

셀에 대한 참조를 유지할 본문이 없지만 응용 프로그램이 메모리가 부족해지면서 시스템이 응용 프로그램을 종료 할 때까지 스크롤 속도가 급격 해지는 결과가 발생합니다 –

0

메모리 경고가 수신되면 보이지 않는 셀 객체는 메모리에서 삭제되고 대기열 관리자는이 프로세스를 내부적으로 처리합니다.

자세히 알아 보려면 메모리 관리가 어떻게 작동합니까? 시뮬레이터에서 코드를 실행하십시오.

그것에 의해 획득 된 주소를 제공하는 셀 객체를 인쇄하십시오. 나중에 하드웨어 옵션을 선택하여 메모리 경고를 생성하십시오.

"row = 7 -> cell = <UICollectionViewCell: 0x7ff8b89096e0; frame = (2 1935; 371 265); clipsToBounds = YES; hidden = YES; opaque = NO; layer = <CALayer: 0x61800003da20>>" 

이렇게하면 주소 관리에 대해 더 많이 이해하는 데 도움이됩니다.