0

作为 iOS 开发(和编程)的新手,我正在尝试完成一些我认为很简单的事情——但我需要一些帮助来编写代码。

我有一个包含一些 facebook 对象的可变数组。该数组称为 facebookPhotosAllTemporary。我想遍历数组,在每个索引处提取每个对象(一个 UIImage),并将这些图像中的每一个插入一个名为 facebookPhotosAll 的新数组中。这是我目前拥有的代码:

在实现中,我有一个私有方法:

- (void) addImagestoArray {
int i;
for (i = 0; i < [facebookPhotosAllTemporary count]; i++) {
    UIImage *image = [UIImage imageWithData:
                           [NSData dataWithContentsOfURL:
                            [NSURL URLWithString:
                             [[facebookPhotosAllTemporary objectAtIndex:i]
                              objectForKey:@"pic_big"]]]];
    [facebookPhotosAll addObject:image];
           }
}

然后在 viewDidLoad 部分我调用该方法:

[self addImagestoArray];

当我运行它时,我的 NSLog 消息说我试图添加对象的数组中没有对象。

我意识到我的代码可能完全有缺陷!但是有人可以让我走上正确的轨道吗?谢谢!

4

1 回答 1

2

这里有几个问题。

  1. 您是否分配并初始化了 facebookPhotosAll?换句话说,在某个地方,例如在您的 init 方法或 viewDidLoad 中,您是否做了类似的事情:

    facebookPhotosAll = [[NSMutableArray alloc] init];

  2. 您正在应用程序的主线程上同步加载来自 Internet 的一组图像。这将挂起用户界面。最好的情况是这会使您的应用程序看起来短暂冻结。最坏的情况是,如果这需要太长时间,操作系统会因为无法响应而终止您的应用程序。

  3. 您为获取图像而编写的行令人讨厌,难以阅读且难以调试。把它分成5行。这样你就可以看到每个部分,以防出现问题。

要处理问题 2,您应该参考 Apple 提供的 LazyTableImages 示例应用程序。这显示了在后台加载图像的正确方法。切勿在主线程上进行同步 Internet 访问。

于 2012-10-13T19:21:04.890 回答