objective-c - 需要帮助编写一个简单的函数来将对象添加到数组( Objective-C )

标签 objective-c ios xcode

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

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

在实现中我有一个私有(private)方法:

- (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 消息说我正在尝试添加对象的数组中没有对象。

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

最佳答案

这里有几个问题。

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

    facebookPhotosAll = [[NSMutableArray alloc] init];

  2. 您正在应用的主线程上同步加载一组来自 Internet 的图像。这将挂起用户界面。最好的情况是这会让您的应用程序看起来暂时卡住。最坏的情况是,如果这花费的时间太长,操作系统会因未能响应而终止您的应用。

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

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

关于objective-c - 需要帮助编写一个简单的函数来将对象添加到数组( Objective-C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875914/

相关文章:

ios - 无法在 Firebase 中保留 'posts' 的 'users' 引用

ios - 当我放大和缩小时,UIButtons 有 "Edge Flicker"。这是 UI 错误吗?有修复吗?

ios - 如何在 init 中将参数从 Objective C 传递到 Swift

objective-c - 通过 Casting 调用另一个类中的方法?

ios - 您的请求产生了错误。 [新的空响应]?

ios - 什么时候可以通过将代码放在 AppDelegate 中来减少代码重复?

xcode - iphone模拟器可以下载浏览器吗

ios - 如何使用 FLAnimatedImage 检查动画的结束

objective-c - XCode/静态分析器 : Suppressing a retain count/leak warning

ios - 如何中断 UIView 动画