我已經嘗試過幾種AFNetworking類的變體,這只是一個例子,但在UIImageView + AFNetworking中,例如,我無法在for循環,並實際上獲得多個幀。意思是,我不明白爲什麼只有永遠的最後一個響應返回,在成功的塊,其中,其他人只是送送出去,但無限期掛起:AFNetworking - 對除for循環中的最終請求之外的所有請求都沒有響應
for (unsigned int i = 1; i <= numFrames; ++i)
{
// Fire a request
NSLog(@"REQUEST MADE FOR FRAME #%u", i);
// get ith frame
NSString* urlString = [NSString stringWithFormat:@"%@%u.png", urlPrefix, i];
NSURL* frameURL = [NSURL URLWithString:urlString];
NSURLRequest* request = [[NSURLRequest alloc] initWithURL:frameURL];
[_myImage setImageWithURLRequest:request
placeholderImage:spinnerImage
success:^(NSURLRequest* request, NSHTTPURLResponse* response, UIImage* image)
{
if (image != nil)
{
NSLog(@"Frame %u DONE!", i);
frames[i - 1] = image;
}
else
{
NSLog(@"Frame #%u is nil, expected %lld bytes!", i, response.expectedContentLength);
}
}
failure:^(NSURLRequest* request, NSHTTPURLResponse* response, NSError* error)
{
NSLog(@"REASON: %@ - %@", error, [error userInfo]);
}];
}
輸出我在控制檯得到的是
2016-03-06 20:04:45.795 [2625:383915] Reachability Flag Status: -R ------- networkStatusForFlags
2016-03-06 20:04:45.825 [2625:383915] REQUEST MADE FOR FRAME #1
2016-03-06 20:04:45.833 [2625:383915] REQUEST MADE FOR FRAME #2
2016-03-06 20:04:45.834 [2625:383915] REQUEST MADE FOR FRAME #3
2016-03-06 20:04:45.921 [2625:383915] [Crashlytics] Version 3.7.0 (102)
2016-03-06 20:04:46.388 [2625:383915] Reachability Flag Status: -R ------- networkStatusForFlags
2016-03-06 20:04:46.389 [2625:383915] Reachability Flag Status: -R ------- networkStatusForFlags
2016-03-06 20:04:46.389 [2625:383915] Reachability Flag Status: -R ------- networkStatusForFlags
2016-03-06 20:04:46.468 [2625:383915] Frame 3 DONE!
如果我將numFrames更改爲類似4,10或50的東西,會發生同樣的情況:爲每個幀放置一個請求,但只有最後一個完成。其他人不返回任何東西,成功塊中的零圖像或失敗塊中的錯誤。
我的問題是,我做錯了什麼?或者更好的是,我們可以通過什麼方式製作一堆幀請求(甚至不一定按順序或同步),並讓它們全部返回而不掛起?我已經檢查過網絡可達性和實際的網址,在那裏一切正常。必須有一種方法可以一次製作一堆請求,並且當URL和網絡可訪問性全部檢出OK時,實際上可以聽到所有請求。
我已經嘗試了幾件事情:
(1)等待時間長
(2)檢查超時和錯誤
(3)將在所述第二幀中的請求所述第一的成功塊(以及第二請求被提出,但沒有聽到回)
(4)的AFNetworking
其它版本沒有升科索沃解放軍!
必須有比這更好的API從網絡上拉框架,因爲它放在一起時的動畫是一種常見操作...
我沒有在AFNetworking 3.x中找到這個API。我看到的最接口的接口是AFHTTPSessionManager,它不會讓我訪問AFHTTPRequestOperation。你能否粘貼你的整個文件,或者至少需要導入和輸入來運行它?謝謝。 – Cindeselia
我已經在bitbucket上創建了AFHTTPSessionManager文件的片段,你可以從https://bitbucket.org/snippets/bharatmodi777/8rA5M獲得它,我剛剛導入了一個文件作爲#import「AFNetworking.h」,就是這樣。讓我知道是否有其他要求。 –