如何确定 NSURLSessionTask 请求何时开始?

2024-05-09

I use NSURLSessionTask我正在尝试监视我的一些 HTTP 请求需要多长时间,我可以监视什么委托方法(或其他方法)NSURLSessionTask实际上提出了最初的请求?如果这是一个NSURLConnection里面一个NSOperation我只是在开始请求时启动计时器,但我无法控制任务何时开始。


请检查NSURLSessionTaskDelegate。它具有以下委托回调:

URLSession:task:didCompleteWithError:
URLSession:task:didReceiveChallenge:completionHandler:
URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
URLSession:task:needNewBodyStream:
URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:

来计算时间间隔。

选项 01 [大约]:

您应该在调用resume方法后立即启动一个计时器,并计算何时调用委托回调didCompleteWithError。

self.dataTask = [self.session dataTaskWithRequest:theRequest];
[self.dataTask resume];

NSTimeInterval totalCountdownInterval;
NSDate* startDate = [NSDate date];
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkCountdown:) userInfo:nil repeats:YES];

选项 02 [如果需要精度]:

NSURLSessionTask 的属性都是 KVO 兼容的。

[self.dataTask addObserver:self forKeyPath:@"someKeyPath" options:NSKeyValueObservingOptionOld context:nil];
[self.dataTask resume];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
  // do some calculation after checking state

   /* 
NSURLSessionTaskStateRunning = 0,                     
    NSURLSessionTaskStateSuspended = 1,
    NSURLSessionTaskStateCanceling = 2,                   
    NSURLSessionTaskStateCompleted = 3, */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定 NSURLSessionTask 请求何时开始? 的相关文章

随机推荐

  • 更改 UINavigationBar 中 UIBarButtonItem 的位置

    如何更改 UIBarButtonItem 在 UINavigationBar 中的位置 我希望我的按钮比正常位置高约 5 像素 此代码为 UINavigationBar 创建一个具有图像背景和自定义位置的后退按钮 诀窍是创建一个中间视图并修
  • 使用 Vue.js 附加 HTML 元素

    所以我对此真的很陌生Vue js我想要实现的目标很简单 我试图附加这个结果Ajax请求进入我的列表 div div
  • 运算符可以用作函数吗? (C++)

    这与我问过的另一个问题类似 但是 我创建了一个表达式类 其工作方式如下 expression
  • 检测窗口是否可见[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 有什么方法可以检测窗口当前是否处于活动状态 即显示在活动选项卡 窗口上 https stackoverflow com questions 9632741 javascript
  • 如何在 Swift 中检查 while 循环条件中的“nil”?

    如何检查nil在 Swift 的 while 循环中 我在这方面遇到错误 var count UInt 0 var view UIView self while view superview nil Cannot invoke with a
  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • 使用 jQuery 在单击时隐藏当前表格行

    我有一堆表行 例如 tr td cell1 td td cell2 td td a href action php cell3 a td tr 当有人单击单元格 a3 中的链接时 有没有办法隐藏整个 tr 行 那么当他们点击单元格 3 中的
  • 如何使用 MVVM-Light 和 WCF RIA 服务创建可混合项目

    我想使用 MVVM 模式构建我的业务应用程序 我选择 MVVM Light 因为它符合我的需求 在我见过的有关 MVVM Light 的每个示例中 没有人使用 WCF RIA 经典的 MIX10 示例在同一项目中使用服务 而 WCF RIA
  • 如何使用curl将文件上传到Atlassian Confluence页面

    我正在尝试按照远程 API 文档中给出的指南将 xls 文件上传到 Confluence wiki 页面 https developer atlassian com confdev confluence server rest api co
  • Java 弱哈希映射 - 需要根据值的弱点而不是键来删除条目

    所以JavaWeakHashMap让我们创建一个映射 如果其键变弱 则删除该映射的条目 但是我怎样才能创建一个Map 当它的条目被删除时values地图上变弱了 我想使用映射的原因是作为全局哈希表 它根据对象的 ID 跟踪对象 ID gt
  • 如何使用 Meteor Spacebars 模板动态渲染 HTML?

    假设我正在存储 div name div and div age div 在我的数据库中 然后我想获取第一个 HTML 字符串并将其呈现在模板中 gt template1 它只渲染第一个字符串 name 车把在里面 然后我想给出新生成的模板
  • 如何左对齐 Angular Material 拉伸 md 按钮中的文本?

    无需过多修改我自己的 CSS 是否有一个属性或配置可以用来左对齐文本md按钮 https material angularjs org latest api material components button directive mdBu
  • 如何用Java创建图像

    比如说在我的程序中 我有这个paint 方法 我的愿望是创建所绘制的矩形的图像 使用 for 循环 我尝试了下面的方法 它确实给了我那些矩形 蓝色 但背景是全黑的 当我运行程序而不创建图像 仅在 JFrame 上绘制矩形时 背景为白色 我怎
  • 分析 ELF 部分和符号大小的工具

    我需要一种方法来分析 ARM 的 GCC 编译器的输出文件 我正在为裸机进行编译 并且我非常关心大小 我可以用arm none eabi objdump由交叉编译器提供 但如果存在用于此任务的工具 则解析输出并不是我渴望做的事情 您知道存在
  • 触发器以捕获服务器中的架构更改

    是否可以实现类似以下触发器的东西 CREATE TRIGGER tr AU ddl All Server ON DATABASE WITH EXECUTE AS self FOR DDL DATABASE LEVEL EVENTS AS D
  • 在knitr中打印漂亮的交叉表

    我想要的是使用 R Markdown 和 knit 从 RStudio 打印漂亮的交叉表 无论是在 pdf 文件中 还是在 html 文件中 我怀疑我错过了一些非常明显的东西 因为我不敢相信这是如此困难 我使用 xtabs 或 ftable
  • TFS 自定义构建任务 - 多个版本

    我需要对自定义 TFS 构建任务进行更改 我想将任务的新版本捆绑在我的扩展中 也保留当前版本 并能够在编辑构建 发布定义时选择版本 我查看了微软的文档将构建任务的多个版本捆绑在一个扩展中 https www visualstudio com
  • 如何在 SQL Server Management Studio 中查看 SSIS 包?

    啊 我通过导入向导创建了 SSIS 包 但使用 Management Studio 在服务器上找不到 SSIS 包 当我进入作业调度程序时 执行 SSIS 包也没有显示为选项 当您启动 SSMS 时 它允许您选择服务器类型和服务器名称 在服
  • SAS,按组求和

    我想通过var1计算总和 你能用两种方法来计算吗 SQL 和数据步骤使用 if first var1 data have input var1 var2 var3 datalines 1 a 3 1 a 4 1 a 3 2 b 5 2 b
  • 如何确定 NSURLSessionTask 请求何时开始?

    I use NSURLSessionTask我正在尝试监视我的一些 HTTP 请求需要多长时间 我可以监视什么委托方法 或其他方法 NSURLSessionTask实际上提出了最初的请求 如果这是一个NSURLConnection里面一个N