UIImageView + AFNetworking setImageWithURLRequest使用RestKit?

我为Rest Api实现使用了RestKit(0.20.0) – 所有GET,POST等。GETs返回图像的一些URL。 我正在使用UIImageView + AFNetworking setImageWithURLRequest函数来下载这些。 我惊讶地看到RestKit日志打印这些提取,所以我做了一些debugging。 似乎AFNetworking发送了一些通知,最终登陆RestKit。

在这里输入图像说明

看起来像它发生,因为AFNetworkingOperationDidStartNotification被激发的图像获取和RK已经在RKObjectRequestOperation.m中注册此通知。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HTTPOperationDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; 

我的问题是 –

  1. 对于我来说,是否这是给我的路由这个问题,我的思想背后使用这个api是为了确保图像提取是完全独立的线程比RK。

  2. 这会影响我的CoreData实现吗? 这个图像是否会被caching – 我猜测它不会是因为我没有明确地存储它,但如果这些操作开始发生在与Rest api操作相同的池上,它可能会影响性能吗?

  3. 这是正确的实施? 我是否应该将图像caching在CoreData中,而不是全部使用AFNetworking API?

  4. 稍微偏离但相关的话题 – 我计划从服务器获取数百个项目,每个项目也可以有很多项目。 而且每一个都会有图像。 所以它是一个漂亮的networking应用程序。 是否有任何最佳实践来pipe理这些请求,以避免性能障碍?

提前Thx的帮助..

对于我来说,是否这是给我的路由这个问题,我的思想背后使用这个API是为了确保图像提取是完全独立的线程比RK。

不,不应该。 该请求仍将在另一个线程上运行。

这会影响我的CoreData实现吗? 这个图像是否会被caching – 我猜测它不会是因为我没有明确地存储它,但如果这些操作开始发生在与Rest api操作相同的池上,它可能会影响性能吗?

图像只会caching在内存中(如果内存可用)。 一般来说,我同意@ m-farhan SDWebImage将是一个更好的select,而不是从核心数据分开,但将图像caching到磁盘,所以你不要下载它们。 一般来说,您不希望将图像存储在Core Data中。

如果您同时完成所有请求,则可能会影响性能。 你应该限制你的并发networking操作〜4或5。

这是正确的实施? 我是否应该将图像caching在CoreData中,而不是全部使用AFNetworking API?

往上看。

稍微偏离但相关的话题 – 我计划从服务器获取数百个项目,每个项目也可以有很多项目。 而且每一个都会有图像。 所以它是一个漂亮的networking应用程序。 是否有任何最佳实践来pipe理这些请求,以避免性能障碍?

往上看。 设置RKObjectManageroperationQueue的并发计数。

我没有很多的RestKit的知识,但我使用了很多的API我只是AFNetworking与JSONparsing器,并在NSDictionery中处理它。 如何根据我的图像caching问题最好的解决scheme是SDWebImages库。 它简单和单独工作,它会照顾所有的caching问题。 和您的问题4.使用AFNetworking requestManager,并不要处理您的数据在主线程(我认为RestKit和/或AFNetworking)将照顾这一点,并实施SDWebImages是这样简单

 #import "SDWebImage/UIImageView+WebCache.h" [userImage setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/12345/picture?type=large"]] placeholderImage:[UIImage imageNamed:@"unknownUser.png"]];