다음 코드는 cellForRowAtIndexPath
내에 있습니다. 이 코드를 편집해야하는 상황은 다음과 같습니다.비동기 이미지 다운로드
1.) 이미지를 다운로드 할 때 문제가 발생하면 setFailedBlock
블록을 반환해야합니다. 어떻게 코드를 내 코드에 추가 할 수 있습니까?
2.) 이미지를 다운로드하는 동안 사용자가보기를 변경 한 다음이 코드 실행을 중단하고 싶습니다 (다운로드 중지). 나는 내가 블록 viewdiddissapear
또는 viewwilldissapear
방법에 취소를 작성해야한다고 생각. 하지만 다운로드를 취소하는 코드를 작성하는 방법을 모르겠습니다. 누군가 이걸하는 방법을 보여줄 수 있습니까?
: 당신이있는 NSURLConnection을 사용하는 경우
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//this will start the image loading in bg
dispatch_async(concurrentQueue, ^{
NSData *someimageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:someimageURL]];
dispatch_async(dispatch_get_main_queue(), ^{
[cell.imageviewofsomeimage setImage:[UIImage imageWithData:someimageData ] ];
});
});
ISN ' 그곳에는 자기 자신을 차단하는 해결책이 없습니다. 'setFailedBlock'을 설정하는 것과 같은가? – Illep
@Ilelep : 블록은 마법의 총알이 아닙니다. 적절한 곳에서 사용하십시오. 처음에는 블록 친화적 인 방법을 취소 할 수 없기 때문에 이것은 적절한 장소처럼 보이지 않습니다. – JeremyP
@JeremyP 그렇다면 올바른 방법은 무엇입니까? 적절한 해결 방법 – Illep