1

嗨,我正在尝试从 facebook 获取用户的朋友个人资料图片并将其加载到我的表格中,它工作正常,但是根据您拥有的朋友数量,这需要很长时间我注意到在我的 fetchPeopleimages 功能部分[ NSData dataWithContentsOfURL:imageURL] 正在延迟。我已经通过 stackoverflow 进行了搜索,看来我可能必须实现NSURLConnection sendAsynchronousRequest 方法或缓存。但是没有合适的例子。任何人都可以请提供解决方案吗?如果我必须实现这些方法,请举例说明我应该如何在我的代码中实现它。

-(void) fetchPeopleimages
{
 if ([listType isEqualToString:@"Facebook"])
    {
        int count=0;
        NSMutableArray *imageArray=[[NSMutableArray alloc]initWithCapacity:[_peopleImageList count]];

        for(NSString *imageUrl in _peopleImageList)
        {
            NSData *imageData = nil;
            NSString *imageURLString = imageUrl;
            count++;
            NSLog(@"URL->%@,count->%d", imageURLString,count);

            if (imageURLString)
            { //This block takes time to complete
                NSURL *imageURL = [NSURL URLWithString:imageURLString];
                imageData = [NSData dataWithContentsOfURL:imageURL];
            }
            if (imageData)
            {
                [imageArray addObject:imageData];
            }
            else
            {
                [imageArray addObject:[NSNull null]];
            }

        }

    _peopleImageList=imageArray;
        NSLog(@"%@",_peopleImageList);
    }
}
4

1 回答 1

0

永远不要在 iOS 应用程序中使用 __withContentsOfURL 如您所见,它阻塞了它运行的线程,使您的应用程序显得生涩或无响应。如果你真的很幸运,如果其中一项操作花费的时间太长,iOS 看门狗计时器会终止你的应用程序。

您必须为这样的事情使用异步网络操作。

苹果有一个示例应用程序可以做到这一点: https ://developer.apple.com/library/ios/samplecode/LazyTableImages/Introduction/Intro.html

于 2013-10-03T18:14:28.527 回答