2017-10-24 8 views
0

私たちはiOS 10 SDKに基づいてアプリケーションを構築しています。これは、UICollectionViewに画像を提示し、SDWebImageフレームワークを使用して画像をロードします。うまくいきますが、UICollectionViewの画像を前後にスクロールすると、アプリが突然クラッシュすることが報告されています。多くの画像をスクロールするとUICollectionViewとSDWebImageがクラッシュする

モバイルデータ接続が3Gに遅れてiPhone 6デバイスでエラーを再現することができました。

はどうなりますか: をスルー画像を上下素早くスクロールしながら、彼らはサーバからロードすることができるよりも速く、突然アプリがバックiOSのデスクトップにクラッシュします。これは、しばらくしてすぐに起こることもあれば、まったく起こらないこともあります - 非常に矛盾します。

我々はこれまでにやっていること:漏れをチェックするための機器を使用し

  • を、メモリの消費量が安定しており、200MBの周りに常にあります。
  • didReceiveMemoryWarningの呼び出しはありません
  • クラッシュと例外を検出するのに、何も記録されません。
  • コンソールまたはデバッガはエラーを表示せず、例外も表示されません.Xcodeは、アプリケーションがクラッシュしたときに電話機への接続が失われたと報告します。

誰でもこれを解決するためのさらなるトラブルシューティングの方法を提案できますか?

ステファン

+0

"コンソールまたはデバッガはエラーを表示せず、例外も表示されません.Xcodeは、アプリケーションがクラッシュしたときに電話機への接続が失われたと報告します。私は実際にメモリ/ CPUの警告(ちょうどXCodeに伝えられる十分な時間がなかった)かもしれないと言いがちです。私も同様の問題を抱えていて、消費していたコール(無駄なコール)を取り除きました。特に古いデバイスで発生しました。可能であれば、低RAM/CPU、iPod Touch 6thG、古いiPhone 5(古いもの)のような古いデバイスを探してみてください。再現する方が簡単かもしれません。 – Larme

+0

@Larme - はい、RAMやCPUがより限定された古いハードウェアで問題を再現する方が簡単です。この問題はおそらく、コレクションビューをスクロールしている間にバックグラウンドで多くのことが起こっているという事実に関連しています。メタデータとサムネイル画像は、サーバからアドホックにロードされます。私たちが読んだことから、これらの問題は主に記憶問題に関連していますが、問題は私たちが全く働かないことです。 – standers

+0

まだこれらの古いデバイスをサポートしたいと思うなら、私は '[UIDevice isSlow]'メソッド(モデルをチェックしますか?)を取得し、ユーザーはスクロールしていて、「停止していません」、まだロードされていませんか?これはあなたに多くの呼び出しを避けることができます。私はスクロールがスムーズではなかったプロジェクトでそれを行いました:TableView内のCollectionView(リロードは消費されます)、ScrollViewを使用して(テーブルの再利用を中断して)スクロールを停止した場合、今それはトリック(完全にテストされていない)を行います。 – Larme

答えて

0

私はSDWebImageと同様の問題がありました。私にとって、それは私が一度にあまりにも多くの画像を読み込み続けるようにしたからです。追加後

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

この問題は消えました。

+0

Danielに感謝します。私はこれを試して、これがこの動作に正の影響を与えるかどうかを見ていきます。 – standers

関連する問題