UIImage の配列であるプロパティと、(同じ画像を表す) imageURL の配列であるプロパティを含むデータ モデルがあります。
特定のビューをロードすると、 SDWebImage を使用して URL からの画像をスクロールビューに取り込みます。
for (NSURL *url in self.project.imageURLs) {
UIImageView *imageView = [[UIImageView alloc]init];
[imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:[UIImage imageNamed:@"loading"] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[imageView setContentMode:UIViewContentModeScaleAspectFit];
[self.scrollview addSubview:imageView];
...some other frame calculations...
}
私の質問は、UI をロックせずにこれらの UIIamges をデータ モデル (self.project.images) に同時にロードするにはどうすればよいかということです。ある種のdispatch_asyncだと思いますが、これをどこで呼び出すかわかりません。
一部の画像は Web ソースからのものであり、一部はローカル デバイス/カメラからのものであるため、両方のプロパティがあります。
考えられる解決策の 1 つは、最初に URL を使用してデータ モデルを非同期にロードするときに、その時点で UIImage をロードすることですが、必要のない大きなメモリ チャンクを使用しているようです。最大 20 個のプロジェクトをロードしているため、すべて画像の配列が含まれています。