문제

이 하나는 꽤 이상한 광고입니다. 나는 assetslibrary API와 함께 문제가 있는지 확실하지 않지만 그 밖의 일이 일어나는 일을 알아낼 수는 없습니다.

AlassetSgroup에서 -EnumerateassetsusingBlock 메서드를 사용하여 Alassets가있는 배열을로드하고 있습니다. 완료되면 사용자 정의 이미지 스크롤러를로드하고 있습니다. Scroller가 스크롤을 마치면 NSInVocationOperations를 사용하여 디스크의 사진 라이브러리에서 현재 표시된보기 (페이지)에 대한 이미지를로드합니다. 이미지가로드되고 캐시되면 대리자에게 알리고 캐시에서 이미지를 잡고 스크롤러의 이미지보기에 표시합니다.

모든 것이 잘 작동하지만, 언제까지 걸리는 시간 - SetImage : 실제로 화면에 눈에 띄게 표시되는 시간에 실제로 호출됩니다. 때로는 10 초 이상이지만 실제로 10 초 이상입니다.

이미지 크기 조정이 있고 이미지 크기 조정이없는 이미지와 함께 시도해 보았습니다. 내가 말했듯이, 느려지는 것은 이미지보기에서 -setImage를 호출 한 후 어딘가에 있습니다. 이 기능을 유발할 수있는 AssetLibrary API의 일종의 일종을 알고 있습니까?

여기에 몇 가지 관련 코드가 있습니다.

- (void)setImagesForVisiblePages;
{
  for (MomentImageView *page in visiblePages)
  {
    int index = [page index];
    ALAsset *asset = [photos objectAtIndex:index];

    UIImage *image = [assetImagesDictionary objectForKey:[self idForAsset:asset]];

    // If the image has already been cached, load it into the
    // image view. Otherwise, request the image be loaded from disk.
    if (image)
    {
      [[page imageView] setImage:image];
    }
    else {
      [self requestLoadImageForAsset:asset];      
      [[page imageView] setImage:nil];
    }
  }  
}
.

도움이 되었습니까?

해결책

이것은 아마도 AssetsLibrary와의 문제를 해결하려는 웹 검색을 엉망으로하여 사과합니다.문제가 전혀 자산 라이브러리가 아니었지만 오히려 멀티 스레딩을 사용하는 것이 아닙니다.이미지가로드가 끝나면 기본 NSNotificationCenter를 사용하여 알림을 게시하고있었습니다.그런 다음 백그라운드 스레드에 게시 한 다음 uiimageview -setImage와 함께 UIImageView를 업데이트 (또는 업데이트하려고 시도합니다).일단 -PerformseConeConmainthread를 사용하도록 변경 한 후에는 그 선택가가 이미지를 대신 이미지를 설정했습니다.

는 멀티 스레딩으로 얼마나 익숙하지 않더라도, 나는 여전히 작은 Gotchas를 때때로 잊어 버린다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top