したがって、これはかなり奇妙な広告です。問題がAssetsLibrary APIにあるかどうかはわかりませんが、他に何が起こっているのか理解できません。
ALAssetsGroupで-enumerateAssetsUsingBlockメソッドを使用してALAssetsで配列をロードしています。完了したら、カスタム画像スクローラーを読み込んでいます。スクローラーがスクロールを終了したら、NSInvocationOperationsを使用して、ディスク上のフォトライブラリから現在表示されているビュー(ページ)の画像を読み込みます。画像が読み込まれてキャッシュされると、デリゲートに通知され、デリゲートはキャッシュから画像を取得して、スクローラーの画像ビューに表示します。
すべて正常に動作しますが、-setImage:が実際に呼び出されてから、実際に画面に表示されるまでにかかる時間は耐えられません。実際に表示されるまでに10秒以上かかることもあります。
画像のサイズ変更の有無にかかわらず試してみましたが、サイズ変更を行うと処理時間はほとんど増えません。私が言ったように、速度低下は、画像ビューで-setImageを呼び出した後のどこかにあります。これを引き起こす可能性のあるAssetLibraryAPIのある種の側面を知っている人はいますか?
関連するコードは次のとおりです。
- (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];
}
}
}