NSMutableArray在for循环后没有保留对象

时间:2014-09-25 22:05:48

标签: objective-c nsmutablearray sdwebimage

我尝试添加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

但重新进入视图后,对象就在那里。真的很奇怪。它没有在第一次尝试时显示它们。

我已经在这里和谷歌上搜索了,但没有什么真正帮助过我。

2 个答案:

答案 0 :(得分:2)

仅在方法完成作业时执行完成块。一旦调用该方法,程序就会继续到下一行,您的数组仍为空。此方法在后台完成了它的工作。完成块将在稍后执行。

要接收填充的数组,您应该从完成块内部调用需要填充数组的代码。

答案 1 :(得分:1)

在调用[manager downloadImageWith...]之后,photosArray不一定要填充,因为您在completed块中添加了对象,这在连接完成后异步发生。< / p>