0
내 응용 프로그램은 서버에서 이미지를로드합니다. 캐싱을 위해 SDWebImage를 사용합니다. 이미지를 표시하려고하면 이미지가 이미 캐시되지 않은 경우 자리 표시 자 이미지가 표시되므로 캐시되지 않은 경우 대기하게됩니다.매개 변수가있는 지연 재귀 메서드 호출
- (void)photoPagesController:(EBPhotoPagesController *)controller
imageAtIndex:(NSInteger)index
completionHandler:(void (^)(UIImage *))handler
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
MyPhoto *photo = self.photos[index];
[self.manager cachedImageExistsForURL:photo.url completion:^(BOOL isInCache) {
if (isInCache) {
dispatch_async(dispatch_get_main_queue(), ^{
handler(photo.imageView.image);
});
}
else {
// Wait 1 second and then call
// photoPagesController:imageAtIndex:completionHandler recursively.
}
}];
});
은}
어떻게 재귀 호출 후 어느 정도 시간을 기다려야 할 수 있을까? 더 나은 구현 방법이 있습니까?
감사를 시도? – zontragon
이 코드는 네트워크 조건에 따라 달라집니다. 간단한 해결책은'- (void) photoPagesController : (EBPhotoPagesController *) 컨트롤러 imageAtIndex : (NSInteger) index.Make 조건과 같은 함수에 인수를 추가하는 것입니다. whiterver want completionHandler : (void (^) (UIImage *)) 핸들러 numberCall : (NSInteger) callNo'는 callNo를 0보다 먼저 전달하고 블록에서 callNo를 증가시킵니다. – codester