当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS开发中如遇到频繁的Http请求,如何取消之前已经发送的Http请求?

iOS开发中如遇到频繁的Http请求,如何取消之前已经发送的Http请求?

2018年02月20日  | 移动技术网IT编程  | 我要评论

电驴怎么下载电影,狂凤驭兽全文免费阅读,天天亦铭网

iOS开发中如遇到频繁的Http请求,如何取消之前已经发送的Http请求?

以上面的代码段为例,他是这么操作的

主要精髓在于

第一点:不要initialize a newAFHTTPSessionManager object everytime 一定要把manager用成全局的

第二点:把请求返回的task对象丢进数组,下次触发的时候把遍历数组,把之前的所有任务[task cancel]

  1. //somewhereinyourclass,let'ssayinViewDidLoadyoushouldinittheAFHTTPSessionManagerobject
  2. -(void)viewDidLoad{
  3. [superviewDidLoad];
  4.  
  5. ///createtheAFHTTPSessionManagerobject,we'regonnauseitineveryrequest
  6. self.manager=[[AFHTTPSessionManageralloc]init];
  7. self.manager.responseSerializer=[AFJSONResponseSerializerserializer];
  8.  
  9. ///createanarraythatisgoingtoholdtherequeststaskwe'vesenttotheserver.sowecangetbacktothemlater
  10. self.arrayOfTasks=[NSMutableArraynew];
  11. ///discussion:
  12. ///anarrayholdsmultipleobjects.ifyoujustwanttoholdareftothelatesttaskobject
  13. ///thencreateapropertyofNSURLSessionDataTaskinsteadofNSMutableArray,andletitpointtothelatestNSURLSessionDataTaskobjectyoucreate
  14.  
  15. }
  16.  
  17.  
  18.  
  19. -(BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString*)string;{
  20. ///yourcodegoeshere
  21. ///.....
  22. ///.....
  23. ///.....
  24. ///.....
  25. ///tillwereach
  26. if(stringLength>=3){
  27. ///cancelallprevioustasks
  28. [self.arrayOfTasksenumerateObjectsUsingBlock:^(NSURLSessionDataTask*taskObj,NSUIntegeridx,BOOLBOOL*stop){
  29. [taskObjcancel];///whensendingcanceltothetaskfailure:blockisgoingtobecalled
  30. }];
  31.  
  32. ///emptythearraOfTasks
  33. [self.arrayOfTasksremoveAllObjects];
  34.  
  35. ///initnewtask
  36. NSURLSessionDataTask*task=[self.managerGET:urlStringparameters:nilsuccess:^(NSURLSessionDataTask*task,idresponseObject){
  37. ///yourcode
  38. }failure:^(NSURLSessionDataTask*task,NSError*error){
  39. ///yourcode
  40. }];
  41.  
  42. ///addthetasktoourarrayOfTasks
  43. [self.arrayOfTasksaddObject:task];
  44. }
  45. returnYES;
  46. }

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网