我通过创建RKObjectRequestOperation
并将它们添加到RestKit的队列来下载RestKit数据:
RKObjectRequestOperation *operation = [RK objectRequestOperationWithRequest:request
success:...
failure:...];
[RK enqueueObjectRequestOperation:operation];
那个效果很好。此外,此数据显示在列表视图中,其中包含显示相关用户图标的UIImageViews。但是,这些用户图标不是通过RestKit下载,而是通过底层的AFNetworking库下载。 UIImageView + AFNetworking也能很好地完成工作(包括缓存):
[self setImageWithURLRequest:userIconRequest
placeholderImage:anonymousUser
success:nil
failure:...];
问题是来自图像视图的那15个用户图标请求阻止了应立即加载下一页的RestKit请求的处理。我可以看到显示“加载”行的列表以及第一个用户图标。在最后一张图片完成加载后,下一页会附加自己。
查看UIImageView + AFNetworking的实现表明它正在使用自己的序列化请求的NSOperation队列实例。但是,我认为这不应该干扰RestKit。
同时向所有请求添加NSOperationQueuePriority
s不会改变任何事情。也许在内部,网络请求以不同的方式序列化?我如何确定这些请求的优先顺序?
提前致谢。
答案 0 :(得分:0)
NSURLConnection
具有未记录的最大连接数。
此外,UIImageView+AFNetworking
的操作队列具有NSOperationQueueDefaultMaxConcurrentOperationCount
个最大当前请求,根据this convincing-sounding AFNetworking discussion,这可能是您的用例的错误选择。
你需要节流。我看到两个简单的解决方案:
UIImageView+AFNetworking
,例如,有4个最大并发操作。UIImageView+AFNetworking
以使用与RestKit相同的操作队列,在这种情况下,您设置的优先级将无关紧要。