我尝试添加NSMutableArray
一些UIImages
下载的SDWebImage
以便稍后显示。
我遇到的问题是,最初数组会将对象存储在完成循环中,但随后它会丢失它们。
数组在viewDidLoad
中初始化,并且在.h
文件中声明了一个属性。
SDWebImageManager *manager = [SDWebImageManager sharedManager];
for (int i = 0; i<urlsArray.count; i++ )
{
[manager downloadImageWithURL:[urlsArray objectAtIndex:i] options:SDWebImageDelayPlaceholder progress:nil
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL)
{
[self.photosArray addObject:image];
//Here are stored into self.photosArray
}];
}
//Here the photosArray is empty
但重新进入视图后,对象就在那里。真的很奇怪。它没有在第一次尝试时显示它们。
我已经在这里和谷歌上搜索了,但没有什么真正帮助过我。
答案 0 :(得分:2)
仅在方法完成作业时执行完成块。一旦调用该方法,程序就会继续到下一行,您的数组仍为空。此方法在后台完成了它的工作。完成块将在稍后执行。
要接收填充的数组,您应该从完成块内部调用需要填充数组的代码。
答案 1 :(得分:1)
在调用[manager downloadImageWith...]
之后,photosArray
不一定要填充,因为您在completed
块中添加了对象,这在连接完成后异步发生。< / p>