2017-10-24 9 views
0

iOS 10 SDK에 앱이 내장되어 있습니다. UICollectionView에 이미지를 표시하고 SDWebImage 프레임 워크를 사용하여 이미지를로드합니다. 잘 작동하지만 사용자가 UICollectionView의 이미지를 앞뒤로 스크롤 할 때 갑자기 응용 프로그램이 갑자기 작동하지 않는다고보고했습니다.많은 이미지를 스크롤 할 때 UICollectionView와 SDWebImage가 충돌합니다.

모바일 데이터 연결이 3G로 느려지면서 iPhone 6 장치에서 오류를 마침내 재현 할 수있었습니다. 그들은 서버에서로드 할 수있는 것보다 더 빨리 이미지를 위아래로 빠르게 스크롤하는 동안이 , 갑자기 응용 프로그램은 다시 아이폰 OS 바탕 화면에 충돌 : 어떻게됩니까

. 이것은 잠시 후, 또는 때로는 전혀 일어나지 않을 수도 있습니다 - 매우 모순 될 수 있습니다. 우리가 지금까지했던 어떤

:

  • 사용 된 장비는 메모리 소비가 안정 200MB를 중심으로 지속적으로 자리 잡고, 누출을 확인합니다.
  • didReceiveMemoryWarning에 대한 호출이 없습니다.
  • 우리는 CrashLytics를 사용하여 충돌 및 예외를 감지하지만 아무 것도 기록되지 않습니다.
  • 콘솔 또는 디버거는 오류 및 예외 사항을 나타내지 않으며 Xcode는 앱이 충돌 할 때 전화 연결이 끊어 졌음을보고합니다.

아무도이 문제를 해결하기위한 추가 문제 해결 방법을 제안 할 수 있습니까?

스테판

+0

"콘솔이나 디버거는 오류가없고 예외도 표시하지 않습니다. Xcode는 앱이 충돌 할 때 전화 연결이 끊어 졌음을보고합니다." 사실 메모리/CPU 경고 일 수도 있습니다 (단지 XCode에 알려야 할 충분한 시간이 없었습니다). 나는 비슷한 문제를 겪었고, 쓸모없는 콜을 제거했다. 특히 오래된 장치에서 발생했습니다. 할 수 있다면, RAM/CPU가 적은 오래된 장치, iPod Touch 6thG, 오래된 iPhone 5 (오래된 것)를 찾으십시오. 재현하기가 더 쉽습니다. – Larme

+0

@Larme - 그렇습니다. 예전의 하드웨어에서 RAM과 CPU가보다 제한적인 방법으로 문제를 재현하는 것이 더 쉬운 것처럼 보입니다. 문제는 아마 collectionview를 스크롤하는 동안 백그라운드에서 계속 진행되고 있다는 사실과 관련이 있습니다. 메타 데이터와 미리보기 이미지는 서버에서 임시로로드됩니다. 우리가 읽은 것에서부터 이와 같은 문제들은 대부분 메모리 문제와 관련이 있으며, 문제는 우리가 일할 것이 전혀 없다는 것입니다. – standers

+0

아직도 이런 오래된 장치를 지원하고 싶다면''UIDevice isSlow ''메서드 (모델을 확인하겠습니까?)를 얻는 것이 유일한 방법입니다. 사용자가 스크롤하고 "멈추지 않고"로드되지 않았습니까? 이렇게하면 많은 전화를 피할 수 있습니다. 나는 스크롤이 원활하지 않은 프로젝트에서 이렇게했다 : TableView 내부의 CollectionView (재로드가 소모 됨)이므로 ScrollView (테이블 재사용 중단)를 사용하고 스크롤이 중지되거나 한 번만로드 된 경우에만로드 지금 그것은 트릭을합니다 (완전히 테스트되지는 않았습니다). – Larme

답변

0

나는 SDWebImage와 비슷한 문제가 있었다. 나를 위해, 내가 한 번에 너무 많은 이미지를 계속 로딩하게했기 때문에 그랬다. SDWebImage. 추가 후

- (void)prepareForReuse 
{ 
    [self.imageView sd_cancelCurrentImageLoad]; 
} 

문제가 사라졌습니다.

+0

대니얼 감사합니다.이 문제를 해결하기 위해 노력할 것입니다. – standers