이미지를 UITableView (GCD)에 비동기 적으로로드하고 하나의 이미지에 셀을 고정하기 전에 셀이 여러 이미지를 통해 "셔터"되는 이상한 동작을보고 있습니다. 말로 표현하기가 어렵 기 때문에 스크린 레코딩을 만들었습니다. 주어진 셀에 대해 하나의 이미지에 고정되기 전에 여러 이미지가 이동하는 것을 볼 수 있습니다. UITableView 비동기 이미지 여러 이미지를 통한 셔터로드
http://www.youtube.com/watch?v=PKuqng81QX4
난 (a REST 엔드 포인트로부터) 이미지를 가져 오지 큐를 사용하고, 다음 메인 큐 셀의 이미지를 설정. 이- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
// ..after getting the cell:
dispatch_queue_t imageQ = dispatch_queue_create("imageQ", NULL);
dispatch_async(imageQ, ^{
NSString *galleryTinyImageUrl = someFunctionToGetThumbnailUrl;
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:galleryTinyImageUrl]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = [UIImage imageWithData:imageData];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
});
});
dispatch_release(imageQ);
이가 (해고 이러한 세포 이미지가로드의 30 트리거, 테이블에 즉, 사용자의 제스처를) 짧은 시간에 여러 번 호출지고 있다는 사실은인지 나에게 문제가 발생합니다 여기에 코드입니다 모든 비동기 쓰레드는 안전하게 "착륙"할 수 있습니다. 내가 보는 행동 (비디오에서)은 내가 여기서 잘못된 것을하고 있음을 증명하는 것으로 보인다. 네가 가지고있는 구체적인 제안이나 폭 넓은 제안 제안을 고맙게 생각한다.
도움 주셔서 감사합니다.
감사합니다. 새로운/재사용 셀을 가져 오는 것 바로 아래에'cell.imageView.image = nil; '을 추가하고 그것을 고쳤습니다! – Steven
다행 당신을 도울 수 있어요. –
루프에서 이미지를 다운로드하지 않으려면 어떻게해야합니까? – mikezang