많은 주제를 살펴 보았지만 여전히 파악할 수 없습니다.그랜드 센트럴 디스패치보기 전환
나는 온라인으로 콘텐츠를 다운로드하는 UITableview를 보유하고 있습니다. 각 셀에는 이미지가 있고 GCD를 사용하여 이미지를 다운로드합니다. 다운로드 한 이미지는 디스크에 저장되며 셀이로드 될 때마다 파일이 이미 존재하는지 확인합니다 (그렇지 않으면 -> gcd, nsdata 등).
누군가 인터넷에 연결되어 있으면 잘됩니다. wifi). 그러나 만약 내가보기 흉한 3G 연결로 앞뒤로 훑어 보려한다면, 대기열 (약 4 셀)을 끝내기를 원하지만 이미 새 것을 할당 받게됩니다. , 새로운 하나, 새로운 하나 그리고 결국 사용자는 실제 UITableview가 채워지기 전에 다른 것들이 실행되기 전에 (그가 보지 않는) looong 시간을 기다려야한다. NSLog를 사용하면 다른 뷰에서도 화면에서 볼 수있는 uiimages를 다운로드하고 만들 수 있습니다. 각 작업은 약 100kb이며, 느린 (또는 심지어 인터넷 연결이 없습니까?) 당신은 많은 시간이 걸릴 수 있습니다.
나는 그것을 취소 할 수 없다는 것을 알고 있지만, 나는 BOOL 변수를 사용하는 것에 관한 다른 주제를 읽었지만 실제로 얻지는 못한다. 사용자가 화면을 떠날 때 BOOL 변수가 변경 되더라도 셀은 이미 대기열에 있습니다.
사용자가 NavigationController에서 뒤로 버튼을 탭하여보기를 나가면 큐의 블록이 비어있는 데이터를 변경하여 다운로드 할 필요가 없으며 블록이 될 수 있습니까? 바로 실행됩니다 (할 일이 없습니다). 그래서 배열 뉴스의 모든 가치를 무언가처럼 만드는 것이 좋을까요? 데이터 소스를 변경할 수 있습니까, 아니면 대기중인 블록이 기다리는 동안 대기중인 블록에 이미 데이터 소스가 있습니까?
또 다른 문제가 있습니다. 현재 실행중인 블록에는 영향을 미치지 않습니다.
누군가 좋은 방향으로 나를 가리킬 수 있습니까?
감사합니다.
Prastow
다음과 같이 요약합니다 : 'UITableView'의 대표 모델을 웹 서비스로 채우고 있습니다. 사용자가 상세보기로 이동할 때 다운로드 대기열을 취소하거나 일시 중지하려고합니다. 이 올바른지? – FluffulousChimp
uitableview는 텍스트 및 이미지 (뉴스 피드)가 포함 된 온라인 XML 파일에서 채워집니다. 하지만 이미지가 커지면 비동기로 처리해야합니다. 사용자가 다시 돌아 왔을 때 gcd를 일시 중지하고 싶습니다. 따라서 detailview는 아니지만 메인 메뉴로 되돌아갑니다. – Prastow