Shi*_*zam 5 objective-c ios nsurlsession nsurlsessiontask
我使用NSURLSessionTasks 并且试图监视我的一些 HTTP 请求需要多长时间,当实际NSURLSessionTask发出初始请求时我可以监视什么委托方法(或其他方法)?如果这是一个NSURLConnection内部,NSOperation我只会在启动请求时启动一个计时器,但我无法控制任务何时开始。
请检查NSURLSessionTaskDelegate。它具有以下委托回调:
\n\nURLSession:task:didCompleteWithError:\nURLSession:task:didReceiveChallenge:completionHandler:\nURLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:\nURLSession:task:needNewBodyStream:\nURLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:\nRun Code Online (Sandbox Code Playgroud)\n\n来计算时间间隔。
\n\n选项 01 [大约]:
\n\n您应该在调用resume方法后立即启动一个计时器,并计算何时调用委托回调didCompleteWithError。
\n\nself.dataTask = [self.session dataTaskWithRequest:theRequest];\n[self.dataTask resume];\n\nNSTimeInterval totalCountdownInterval;\nNSDate* startDate = [NSDate date];\nNSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkCountdown:) userInfo:nil repeats:YES];\nRun Code Online (Sandbox Code Playgroud)\n\n选项 02 [如果需要精度]:
\n\nNSURLSessionTask\xe2\x80\x99s 属性均符合 KVO 标准。
\n\n[self.dataTask addObserver:self forKeyPath:@"someKeyPath" options:NSKeyValueObservingOptionOld context:nil];\n[self.dataTask resume];\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{\n // do some calculation after checking state\n\n /* \nNSURLSessionTaskStateRunning = 0, \n NSURLSessionTaskStateSuspended = 1,\n NSURLSessionTaskStateCanceling = 2, \n NSURLSessionTaskStateCompleted = 3, */\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
5526 次 |
| 最近记录: |