我有一个问题,我使用加载 3 个,有时是 4 个相同的图像
[imageFile setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];
我想看看是否有办法将它加载到某种 NSData 中并稍后使用它,有点像我在下面做的,但使用 AFNetworking。
dispatch_async( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void)
{
NSURL *url3 = [NSURL URLWithString:friendAvatar];
NSData *data = [NSData dataWithContentsOfURL:url3];
UIImage *img = [[UIImage alloc] initWithData:data];
dispatch_async( dispatch_get_main_queue(), ^(void){
imageFile.image = img;
bgImageFile.image = img;
});
});
我也没有调用图像加载全部以相同的方法,一旦填充了用户朋友列表,在 cellForRowAtIndexPath 下调用 2 次,然后当我在单元格上滑动以显示其隐藏(下)层时加载第 3 次,第 4 次重复按下按钮时会调用图像,该按钮会在单元格被滑动后显示,从而导致我和那个朋友之间的聊天室视图。
希望我能明白我想要达到的目标。非常感谢任何指向正确方向的帮助。
更新:
这是我当前的代码,这就是我多次拉同一张图片的意思。
在 - 的里面cellForRowAtIndexPath
[imageFile setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];
[bgImageFile setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];
被调用的方法bottomDrawerWillAppear
包含
UIImageView *drawerBGImg = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,75)];
NSString *friendAvatar = [NSString stringWithFormat:@"%@%@%@", @"http://v9a2a7.com/user_photos/", [MyClass friendID], @".jpg"];
[drawerBGImg setImageWithURL:[NSURL URLWithString:friendAvatar]];
在单独的班级和单独的视图中viewMessageViewController
NSString *friendAvatar = [NSString stringWithFormat:@"%@%@%@", @"http://v9a2a7.com/user_photos/", email, @".jpg"];
[bgImage setImageWithURL:[NSURL URLWithString:friendAvatar]];
我还没有确认viewMessageViewsController
's 强制从服务器中提取图像,但我知道一个事实,即cellForRowAtIndexPath
对同一图像发出 3 次请求,这导致使用 3 倍的数据使用量
希望这可以解决问题。