2013-02-16 73 views
5

其他網絡請求我下載的數據與RestKit通過創建RKObjectRequestOperation S和它們添加到RestKit的隊列:的UIImageView + AFNetworking圖像請求隊列塊從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

NSURLConnection有一個無證的最大連接數。

此外,UIImageView+AFNetworking的操作隊列有NSOperationQueueDefaultMaxConcurrentOperationCount最大當前請求,根據this convincing-sounding AFNetworking discussion,這可能是您的用例的不好選擇。

您需要節流。我看到兩個簡單的解決方案:

  1. UIImageView+AFNetworking修改爲擁有4個最大併發操作。
  2. 修改UIImageView+AFNetworking使用與RestKit相同的操作隊列,在這種情況下您設置的優先級爲將會是的問題。